我正在使用Backbone + Marionette.js在UI上工作,它在一个页面上多次显示相同的Widget。我正在努力解决每个小部件中包含事件的最佳方法。让我们说每个小部件显示一个选定的朋友的Facebook信息(兴趣,状态提要,共同的朋友)。如果用户更改了特定小部件的选定朋友,那么更新属于该小部件的模型的最佳方式是什么?
以下是我想解决这个问题的方法......
创建设置模型 - 当用户在窗口小部件中选择其他朋友时,好友选择视图会更新设置模型。
方法1: 控制器在“更改”事件上侦听设置模型,然后更新所有相关模型。每个模型都不会知道设置模型。
方法2: 将设置模型传递给每个模型的选项,每个模型都听取设置模型,当它改变时,它会做任何需要(重新加载等)。
这些是我想到的两种方法。我觉得我更喜欢方法1,但我会很感激那些以类似方式使用Backbone的人的反馈。
谢谢, Habeel
答案 0 :(得分:0)
我会按照您的建议使用单例设置模型进行方法2。这样,监听设置的视图或模型负责进行更新。方法1有两个潜在的缺陷。如果你移动控制器实际发生的逻辑,它可能会变得复杂和复杂。如果控制器只是对设置模型上的事件做出反应并将它们传播到其他模型和视图,那么它似乎没有什么理由存在。
答案 1 :(得分:0)
另一种方法可能是利用Marionette的event aggregator功能。这样您甚至不需要设置模型。相反,只需让更改的模型触发其他模型正在监听并相应调整的全局事件。