【问题标题】:backbone.js correct way to update model when view changed视图更改时更新模型的backbone.js正确方法
【发布时间】:2012-04-06 09:32:45
【问题描述】:

视图更改时更新模型的正确方法是什么。是否需要在视图中或在控制器等其他地方执行?

例如,我有一个模型 (model1) 和一些与此模型关联的视图 (View1)。当我更改视图上的某些字段时,我需要更新模型。哪种方法是正确的?

另外,我有一个与另一个视图 (View2) 关联的模型集合,我需要将模型 (model1) 放入该集合。 第二个问题 - View1 或 Model1 是否应该知道收集,如果是 - 应该如何完成?

【问题讨论】:

    标签: javascript backbone.js backbone-views


    【解决方案1】:

    MVC 理论有一种有趣的方法,应用于 MVC... 在这里查看更多解释什么是 Backbone 中的控制器

    http://lostechies.com/derickbailey/2011/12/23/backbone-js-is-not-an-mvc-framework/

    由@derick-bailey 撰写

    总的来说,Bailey 说 Backbone 中没有控制器。所以,我个人认为,每个模型更新都应该发生在与该模型关联的视图中。

    Backbone 中的每个模型,当被添加到一个集合(或多个集合)并被更新时,会触发它所属的集合中的一个事件,因此您应该在视图中监听该事件。

    在你的例子中

    • View1.collection = [model1];
    • View2.collection = [model1, model2, model3];

    并且当View1改变model1时,model1会触发一个事件给View2.collection,你可以监听。

    【讨论】:

    • 但是这样可能会出现一些问题。例如,如果 View 订阅了 Model.change 并且我更改了视图并在更新模型之后,那么视图将再次重新呈现 - 这当然是矫枉过正
    • 这就是为什么认为在视图不可见时销毁视图是一种好的做法,如果这是您的意思的话。
    • @ph0en1x 你永远不应该看到你不使用的东西。您会降低应用的性能,并可能导致僵尸事件触发!
    【解决方案2】:

    控制器与模型对话,所以是的:当视图更改时更新模型的正确方法是通过控制器

    【讨论】:

    • 但据我了解,主干中的控制器是视图职责的一部分,对吗?
    猜你喜欢
    • 2018-06-30
    • 1970-01-01
    • 2012-09-04
    • 2022-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    相关资源
    最近更新 更多