我很困难从我的主视图实例“绑定”我的路由器事件。我的第一个想法是因为路由器只触发我的Depths
集合。如何正确通知我的viewpoint.js
页面更改?
router.js
var depth = depth || {};
(function() {
'use strict';
var DepthRouter = Backbone.Router.extend({
routes: {
'*page' : 'setPage'
},
setPage: function( page ) {
// Set the current page
page = page.trim() || 'home';
// Trigger a collection {page} event
depth.Depths.trigger(page);
}
});
... // instance creation and Backbone.history.start() stuff
}());
viewpoint.js
var depth = depth || {};
$(function($) {
'use strict';
depth.Viewpoint = Backbone.View.extend({
el: 'section#right > div.content',
// Bind relevant triggers
initialize: function() {
},
});
});
答案 0 :(得分:0)
您需要将集合中的更改绑定到视图中。 这意味着无论何时您想要更新集合的视图,都会发生这种情况。
例如:
var list = new ModelList();
var listView = new ModelView1({model: list});
var counterView = new ModelView2({model: list});
我们有两个视图链接到相同的colleciton模型: 现在我们绑定到集合事件:
ModelView1 = Backbone.View.extend({
initialize : function() {
this.model.bind('add', this.render);
this.model.bind('remove', this.render);
this.model.bind('reset', this.render);
}
ModelView2 = Backbone.View.extend({
initialize : function() {
this.model.bind('add', this.render);
this.model.bind('remove', this.render);
this.model.bind('reset', this.render);
}
每当提取集合(重置)时,系统会添加(添加)或删除(删除),系统会调用渲染方法在你的观点