我正在尝试在属于集合的Backbone模型上手动触发change
事件。这是一个最小的例子:(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');
但是当我触发事件时出现以下错误:(在JSFiddle中,打开Javascipt控制台以查看完整错误)
Uncaught TypeError: Cannot read property 'previousAttributes' of undefined
我该如何解决这个问题?
(我这样做的原因是,在实际代码中,模型有一个集合 - 例如person.things = new ThingCollection();
- 我想在change
上手动触发person
事件{1}}当其集合发生变化时)
答案 0 :(得分:4)
change
事件应该包含参数,如event catalog中所述。
事件应该有(model, options)
作为参数,其中model是模型本身,options是与set
一起使用的选项对象。如果选项是可选的,我无法回想起我的头脑。
在您的情况下,由于您只是手动触发事件,因此您必须提供这些参数。您看到的错误来自其他一些试图访问model.previousAttributes
并且模型未定义的代码。
TL; DR:
person.trigger('change', person, {});
您可以省略{}
。