在 backbone 视图中触发更改事件而不是重置
Change event fired instead reset in backbone view
我正在尝试通过 cllection fetch 在视图中执行我的重置事件,但它不起作用...
路由器:
var tablesCollection = new TablesCollection();
var tablesView = new TablesView({ collection: tablesCollection});
tablesCollection.fetch({ reset: true });
我的看法:
initialize: function(){
_.bindAll(this);
this.collection.bind('reset', this.render);
this.collection.bind('add', this.addTable);
this.collection.bind('change', this.changeTable);
this.collection.bind('destroy', this.delTable);
},
render: function() {
this.el.innerHTML = _.template( this.template, { data : _.groupBy( this.collection.toJSON(), 'status')} );
}
如果我在 fetch 中设置了 reset: true,Change 事件仍然会被触发。
我想通过重置事件呈现集合中的每个项目,然后通过更改事件只编辑一个。
感谢任何帮助
重置您的 collection 不会删除您的事件绑定。它只是从 collection 中删除 object。
如果另一个 view/server 事件再次开始填充您的 collection,那么您的视图仍处于绑定状态并且仍会触发事件。
首先我会使用 .on(backbone 事件系统)而不是 .bind
然后,如果您想解除视图与 collection 未来潜在更改的绑定,请使用
http://backbonejs.org/#Events-off
或者更好的是,如果你想破坏这个特定的视图(并且它仍在反应,也许那是你的问题)然后使用
http://backbonejs.org/#View-remove
它会自动解绑你所有的活动。
希望对你有帮助
编辑:
重置将始终触发 'change',因为它会更改 collection 的所有 object。您应该调整渲染函数以在 'change' 而不是 'reset'.
上触发
我正在尝试通过 cllection fetch 在视图中执行我的重置事件,但它不起作用...
路由器:
var tablesCollection = new TablesCollection();
var tablesView = new TablesView({ collection: tablesCollection});
tablesCollection.fetch({ reset: true });
我的看法:
initialize: function(){
_.bindAll(this);
this.collection.bind('reset', this.render);
this.collection.bind('add', this.addTable);
this.collection.bind('change', this.changeTable);
this.collection.bind('destroy', this.delTable);
},
render: function() {
this.el.innerHTML = _.template( this.template, { data : _.groupBy( this.collection.toJSON(), 'status')} );
}
如果我在 fetch 中设置了 reset: true,Change 事件仍然会被触发。 我想通过重置事件呈现集合中的每个项目,然后通过更改事件只编辑一个。 感谢任何帮助
重置您的 collection 不会删除您的事件绑定。它只是从 collection 中删除 object。
如果另一个 view/server 事件再次开始填充您的 collection,那么您的视图仍处于绑定状态并且仍会触发事件。
首先我会使用 .on(backbone 事件系统)而不是 .bind
然后,如果您想解除视图与 collection 未来潜在更改的绑定,请使用 http://backbonejs.org/#Events-off
或者更好的是,如果你想破坏这个特定的视图(并且它仍在反应,也许那是你的问题)然后使用 http://backbonejs.org/#View-remove
它会自动解绑你所有的活动。
希望对你有帮助
编辑:
重置将始终触发 'change',因为它会更改 collection 的所有 object。您应该调整渲染函数以在 'change' 而不是 'reset'.
上触发