javascript - 如何防止 Backbone 模型向集合事件传播?

标签 javascript jquery backbone.js backbone-events

如何防止主干模型事件传播到主干集合?

编辑:

假设我有如下内容,其中 CollectionView 包含 MyModels 的集合...

var CollectionView = Backbone.Collection.Extend({
    initialize: function() {
        this.collection.on("change", doStuff);
    }
});

var ModelView = Backbone.View.Extend({ 
    initialize: function() {
        this.model = new MyModel();
        this.model.on( "change", doStuff );
        this.model.fetch();
    }
});

如果在特殊情况下我不希望“更改”事件在获取完成后传播到集合,我想知道是否有任何方法可以阻止它。

谢谢

最佳答案

要防止模型触发更改事件:

model.set(attrs, {silent: true});

但这可能不是您想要的,因为这也会阻止触发模型的更改事件。

集合传递所有模型事件,但您可以做的是传递额外的选项,这些选项也将传递:

model.set(attrs, {dontBubble: true});

在您的 CollectionView 中:

var CollectionView = Backbone.View.extend({
  this.initialize = function() {
    this.collection.on('change', doStuff, this);
  },
  this.doStuff = function(model, collection, options) {
    if (options.dontBubble) {
      return;
    }
    // Do some stuff.
  }
});

诚然,这有点难看,但这是解决问题的一种方式。

关于javascript - 如何防止 Backbone 模型向集合事件传播?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14901205/

相关文章:

javascript - ListView React native cloneWithRows 未获取正确的数据

javascript - Chart.js 2.0 中的添加数据

javascript - Bundle.js 在命令之后没有创建 - Node

javascript - 主干模型、JSON 和 HTML 表单

javascript - Vuex 操作不等待完成 axios promise

javascript - jquery addClass/removeClass 不适用于 header

php - Functions.php wordpress 不适用于样式表或 jquery

javascript - 使用 jQuery.load 在另一个模板中显示一个模板

backbone.js - 获取主干模型时出错(在 Chrome 中有效,但在 Firefox 和 ie9 中无效)

javascript - 如何仅在另一个函数完成后才执行另一个函数?