2015-09-04 62 views
1

我正嘗試在屬於集合的Backbone模型上手動觸發change事件。下面是一個小例子:(JSFiddle如何手動觸發Backbone模型上的change事件?

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(); - 我想手動觸發personchange事件時,其收藏的變化)

回答

3

預計change事件將具有參數,如event catalog中所述。

事件應該有(model, options)作爲參數,其中model是模型本身,options是與set一起使用的選項對象。如果選項是可選的,我無法回想起我的頭腦。

在你的情況,因爲你只是手動觸發事件,你將不得不提供這些參數。您看到的錯誤是來自其他代碼嘗試訪問model.previousAttributes而未定義模型。

TL; DR:

person.trigger('change', person, {}); 

,你可能可以省略{}

相關問題