backbone.js:防止在模型改变时触发监听器事件

backbone.js: Prevent listener event from firing when model changes

本文关键字:监听器 事件 改变 模型 js backbone      更新时间:2023-09-26

当模型被更改时,我在视图中有以下侦听器:

this.listenTo(this.model, 'change', this.render);

当我改变模型时:

model.set('foo', bar);

是否有可能使其不触发此特定函数调用的侦听器事件?我仍然希望事件在其他调用时触发。

From the fine manual:

一般来说,当调用一个函数发出一个事件(model.set, collection.add,等等…),如果你想防止事件被触发,你可以传递{silent: true}作为一个选项。注意,这是很少,甚至可能从来都不是一个好主意。在你的事件回调选项中传递一个特定的标志来查看,并选择忽略,通常会更好。

所以如果你不想让特定的set调用触发一个变化事件,那么:

model.set('foo', bar, { silent: true });

或者使用自定义选项将一些信息传输到render:

model.set('foot', bar, { ignore_this: true });

并调整render:

render: function(options) {
    if(options && options.ignore_this)
        return;
    // ...
}