我有一个视图,这是一个手机列表。在列表中,您可以添加或删除手机。例如,这是在单击删除电话表单时调用的函数。问题是我想删除手机后导航到更新列表。我使用Backbone的方式,这意味着从服务器重新获取手机集合,但我想这没关系,只要列表更新。使用下面的功能,列表不会刷新。
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: ");
}
});
},
那么如何导航到更新列表?
答案 0 :(得分:1)
在集合中的模型上调用delete并在服务器上成功删除该模型后,该模型将触发' destroy'会冒泡到集合的事件。视图只是被告知要听取集合上的销毁事件,然后一旦发生这种情况就重新渲染。为此,请将此行代码放在视图的初始化函数中:
this.listenTo(this.collection, 'destroy', this.render);
一旦删除了集合中的模型,此代码将调用render函数。请注意,没有必要从服务器获取更新列表,因为主干已经从前端的集合中删除了它。当然,如果列表有可能被其他客户端更改,则可能需要再次从服务器中获取该列表。
这可能比在移除函数本身中放置渲染调用更好,因为通过其他方式从集合中移除模型的情况。