【问题标题】:Backbone.Collection firing 'reset' but not 'add'Backbone.Collection 触发“重置”而不是“添加”
【发布时间】:2014-08-30 20:08:26
【问题描述】:

我有一个看似简单的例子,但我无法弄清楚。我有最新版本的 Backbone,所以“添加”应该在获取时自动触发。我已经验证了提取可以正常工作。

这里定义了事件监听器

var InstallerListView = Backbone.View.extend({
  $el: $('#installers-list'),
  initialize: function (args) {
    _.extend(this, args);
    this.installers.on('add', function (model) {
      // not reached
      console.log('add triggered');
    });
    this.installers.on('reset', function () {
      // reached
      console.log('reset triggered');
    });
  }
});

这里是我的 fetch 调用

installers.fetch({
  reset: true,
  data: {/* some data */}
});

感谢任何帮助“添加”到火。

【问题讨论】:

    标签: javascript events backbone.js collections fetch


    【解决方案1】:

    当您将 reset 传递给您的 fetch 调用时,主干会抑制所有 addremove 事件,并在最后只触发一个 reset 事件。

    来自annotated source

    当您的项目多于您想单独添加或删除时, 您可以使用新的模型列表重置整个集合,而无需触发 任何精细的添加或删除事件。完成后触发重置。有用 用于批量操作和优化。

    如有必要,您始终可以绑定到重置事件并自己在每个模型上触发 add 事件,或者如果您需要在添加每个模型时触发它,您可以 override 为您的集合设置重置事件。

    【讨论】:

    • 我只是根据这些信息改变了我的方法。感谢您向我介绍扩展文档。
    猜你喜欢
    • 2017-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    • 2020-03-20
    • 2012-04-09
    相关资源
    最近更新 更多