Backbone.js 从集合中删除模型后,如何获取要刷新的视图?
我有一个视图,它是一个电话列表。在列表中,您可以添加或删除手机。例如,这里是单击delete phone表单时调用的函数。问题是,一旦手机被删除,我想导航到更新的列表。我使用主干网的方式,意味着从服务器上重新提取手机集合,但我想这没关系,只要更新列表就行。使用下面的函数,列表不会刷新Backbone.js 从集合中删除模型后,如何获取要刷新的视图?,backbone.js,backbone-routing,Backbone.js,Backbone Routing,我有一个视图,它是一个电话列表。在列表中,您可以添加或删除手机。例如,这里是单击delete phone表单时调用的函数。问题是,一旦手机被删除,我想导航到更新的列表。我使用主干网的方式,意味着从服务器上重新提取手机集合,但我想这没关系,只要更新列表就行。使用下面的函数,列表不会刷新 deletePhone: function (ev) { var that = this; ev.preventDefault();
deletePhone: function (ev) {
var that = this;
ev.preventDefault();
var phoneDetails = $(ev.currentTarget).serializeObject();
var phone = new P.phone();
phone.set({id: phoneDetails['phone-to-delete']});
phone.destroy({
success: function(model, response, options) {
Backbone.history.navigate('phones', {trigger: true});
},
error: function(model, response, options) {
console.log("In error: ");
}
});
},
那么,如何导航到更新的列表呢?一旦对集合中的模型调用delete,并且该模型在服务器上成功删除,该模型将触发一个“销毁”事件,该事件将在集合中出现。视图只需要被告知侦听集合上的销毁事件,然后在发生此事件后重新渲染。为此,请将这行代码放入视图的初始化函数中:
this.listenTo(this.collection, 'destroy', this.render);
删除集合中的模型后,此代码将调用render函数。请注意,不需要从服务器获取更新的列表,因为主干已经将其从前端的集合中删除。当然,如果列表可能已被其他客户端更改,则可能需要再次从服务器获取该列表
这可能比在remove函数本身中放置render调用要好,因为这样可以通过其他方式从集合中移除模型