在一个漂亮的世界骨干视图中通知底层模型,模型触发事件。视图将自身更新为对事件的响应。
如果视图触发事件而另一个视图响应此事件,则它是否合法。基础模型甚至可能对此没有任何线索?
假设我有一个购物车是一个集合,现在我有一个视图称之为项目数和总成本的一瞥视图,其中包含查看购物车详细内容的链接。
因此,用户单击视图触发事件的链接,但这会被控制器或除模型之外的任何其他方捕获。
让底层模型退出游戏,是吗?合法的?
答案 0 :(得分:4)
Backbone的优点在于其灵活性,并且它不要求您严格遵守特定的架构。
因此,一个视图触发事件没有问题,另一个视图直接响应此事件而不更改模型上的任何内容。
但是,需要提出的问题是实施该架构最简洁的方法。
在我看来你所描述的情况时,我会使用一个全局事件对象来让两个视图相互通信。
这是一些示例代码
var globalEvents = {};
_.extend(globalEvents, Backbone.Events);
var GlimpseView = Backbone.View.extend({
events: {
'click a.see-verbose': 'onSeeVerboseClick'
},
onSeeMoreClick: function() {
globalEvents.trigger('seeVerbose', this.model);
}
});
var VerboseView = Backbone.View.extend({
initiliaze: function() {
globalEvents.on('seeVerbose', onSeeVerbose, this);
},
onSeeVerbose: function(model) {
// code to render the verbose view
}
});