【问题标题】:How do I get a view to refresh after I delete a model from a collection?从集合中删除模型后,如何刷新视图?
【发布时间】:2014-04-23 22:54:11
【问题描述】:

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


            });

      },

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

【问题讨论】:

    标签: backbone.js backbone-routing


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-07
      • 1970-01-01
      相关资源
      最近更新 更多