我正在尝试手动触发change
属于集合的 Backbone 模型上的事件。这是一个最小的例子:( JSFiddle )
var PersonModel = Backbone.Model.extend({});
var PersonCollection = Backbone.Collection.extend({
model: PersonModel
});
var person = new PersonModel({ name: 'Spike' });
var people = new PersonCollection([person]);
person.trigger('change'); // throws error
console.log('triggered event successfully');
Run Code Online (Sandbox Code Playgroud)
但当我触发事件时,出现以下错误:(在 JSFiddle 中,打开 Javascipt 控制台查看完整错误)
Uncaught TypeError: Cannot read property 'previousAttributes' of undefined
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?
(我这样做的原因是,在实际代码中,模型有一个集合 - 例如person.things = new ThingCollection();
- 我想在其集合更改时手动触发该change
事件)person
该change
事件应具有参数,如事件目录中所述。
该事件应具有(model, options)
参数,其中 model 是模型本身, options 是与 一起使用的选项对象set
。我一时想不起选项是否是可选的。
在您的情况下,由于您只是手动触发事件,因此您必须提供这些参数。model.previousAttributes
您看到的错误是来自尝试访问未定义模型的其他代码。
长话短说:
person.trigger('change', person, {});
Run Code Online (Sandbox Code Playgroud)
并且您也许可以省略{}
.
归档时间: |
|
查看次数: |
9299 次 |
最近记录: |