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

时间:2014-04-23 22:54:12

标签: backbone.js backbone-routing

我有一个视图,这是一个手机列表。在列表中,您可以添加或删除手机。例如,这是在单击删除电话表单时调用的函数。问题是我想删除手机后导航到更新列表。我使用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: ");
                  }


            });

      },

那么如何导航到更新列表?

1 个答案:

答案 0 :(得分:1)

在集合中的模型上调用delete并在服务器上成功删除该模型后,该模型将触发' destroy'会冒泡到集合的事件。视图只是被告知要听取集合上的销毁事件,然后一旦发生这种情况就重新渲染。为此,请将此行代码放在视图的初始化函数中:

this.listenTo(this.collection, 'destroy', this.render);

一旦删除了集合中的模型,此代码将调用render函数。请注意,没有必要从服务器获取更新列表,因为主干已经从前端的集合中删除了它。当然,如果列表有可能被其他客户端更改,则可能需要再次从服务器中获取该列表。

这可能比在移除函数本身中放置渲染调用更好,因为通过其他方式从集合中移除模型的情况。