1

我正在使用 Backbone + Marionette.js 开发 UI,它在单个页面上多次显示相同的 Widget。我正在努力寻找在每个小部件中包含事件的最佳方式。假设每个小部件显示一个选定朋友的 Facebook 信息(兴趣、状态提要、共同朋友)。如果用户更改了该特定小部件的选定朋友,那么更新属于该小部件的模型的最佳方法是什么?

这就是我想解决这个问题的方法......

创建设置模型 - 当用户在小部件中选择不同的朋友时,朋友选择视图会更新设置模型。

方法 1:控制器在“更改”事件上监听设置模型,然后更新所有相关模型。每个模型永远不会知道设置模型。

方法 2:将设置模型传递给每个模型的选项,每个模型都监听设置模型,当它发生变化时,它会做任何需要的事情(重新加载等)。

这是我想到的两种方法。我觉得我更喜欢方法 1,但我会感谢以类似方式使用 Backbone 的人的任何反馈。

谢谢,哈比尔

4

2 回答 2

0

我会按照您的建议使用单例设置模型来采用方法 2。这样,监听设置的视图或模型负责进行更新。方法 1 有两个潜在的陷阱。如果您将实际发生在控制器上的逻辑移动到控制器上,它可能会变得错综复杂。如果控制器只是对设置模型上的更改事件做出反应并将它们传播到其他模型和视图,那么它似乎没有理由存在。

于 2013-09-17T18:37:03.850 回答
0

另一种方法是利用 Marionette 的事件聚合器功能。这将使您甚至不需要设置模型。相反,只需让更改后的模型触发其他模型正在侦听并相应调整的全局事件。

于 2013-09-17T20:47:58.160 回答