Backbone.js 从集合中删除模型后,如何获取要刷新的视图?

Backbone.js 从集合中删除模型后,如何获取要刷新的视图?,backbone.js,backbone-routing,Backbone.js,Backbone Routing,我有一个视图,它是一个电话列表。在列表中,您可以添加或删除手机。例如,这里是单击delete phone表单时调用的函数。问题是,一旦手机被删除,我想导航到更新的列表。我使用主干网的方式,意味着从服务器上重新提取手机集合,但我想这没关系,只要更新列表就行。使用下面的函数,列表不会刷新 deletePhone: function (ev) { var that = this; ev.preventDefault();

我有一个视图,它是一个电话列表。在列表中,您可以添加或删除手机。例如,这里是单击delete phone表单时调用的函数。问题是,一旦手机被删除,我想导航到更新的列表。我使用主干网的方式,意味着从服务器上重新提取手机集合,但我想这没关系,只要更新列表就行。使用下面的函数,列表不会刷新

      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调用要好,因为这样可以通过其他方式从集合中移除模型