2012-04-06 119 views
2

视图更改时更新模型的正确方法是什么?是否需要在视图中或控制器等其他位置执行操作?backbone.js在视图更改时更新模型的正确方法

例如我有一个模型(模型1)和一些视图(视图1)与此模型相关联。当我更改视图中的某些字段时,我需要更新模型。哪种方法是正确的?另外,我有一个与另一个视图(View2)关联的模型的集合,并且我需要将模型(model1)添加到该集合中。 第二个问题 - View1或Model1应该知道关于收集的信息,如果是 - 应该如何处理?

回答

1

有MVC理论,应用到MVC的有趣的方法...在这里寻找更多的解释什么是控制器的骨干

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

通过@德里克 - 贝利

总摘要写,贝利说,有主干没有控制器。所以,我个人认为,每个模型更新应该在与该模型相关的视图中进行。

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

在您的例子

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

而且,当View1更改model1时,model1将触发一个事件给View2.collection,您可以侦听。

+0

但这样可能会出现一些问题。例如,如果View订阅了Model.change,并且我更改了视图和更新后的模型,所以视图将再次呈现 - 这当然是过度杀伤 – Ph0en1x 2012-04-06 14:55:36

+0

这就是为什么在视图不可见时销毁View是一种很好的做法,如果这是你的意思。 – drinchev 2012-04-06 15:47:41

+0

@ ph0en1x你永远不应该离开你没有使用的视图。你会降低你的应用程序的性能,并可能导致僵尸事件触发! – tkone 2012-04-07 00:08:55

0

控制器交谈模式,所以是:当视图改变为更新你的模型正确的方法是通过你的控制器

+0

但据我了解,在骨干控制器是视图责任的一部分,对吗? – Ph0en1x 2012-04-06 10:24:59