Como os eventos de 'mudança' são tratados nos modelos de backbone?
Eu estou tentando construir um modelo que atualiza dinamicamente variáveis de sessão em um projeto do Meteor. Eu sei que JSON simples não deve ser armazenado em modelos de backbone, então eu tenho um modelo especial configurado assim:
initialize : function () {
// Log the changed properties
this.on('change', function (model, options) {
for ( var i in options.changes)
this.display(i);
Session.set('NewSpecial', model);
});
},
//Attributes
defaults: {
"Product" : null,
"ShortDescription" : null,
"Category" : "food",
"Price" : new PriceModel,
"Date" : new DateModel,
"Uses" : 0,
"Tags" : [],
"Contributor" : null
},
Com "Preço" e "Data" sendo armazenados em seus próprios modelos:
//Price model for use within Special
var PriceModel = Backbone.Model.extend({
defaults : {
"Regular" : null,
"Special" : null,
"PercentOff" : null
}
});
//Date model for use within Special
var DateModel = Backbone.Model.extend({
defaults : {
"StartTime" : null,
"EndTime" : null,
"HumanTimeRange" : null
}
});
Como mostrado, quando os atributos do modelo Especial são alterados, ele deve chamar a exibição para o atributo que foi alterado e, em seguida, definir o Session var para o modelo. Se o meu DateModel ou PriceModel mudar, no entanto, não parece acionar um evento de mudança no modelo especial. Se cada "DateModel" e "PriceModel" tiverem seus própriosthis.on('change', ...)
métodos que chamamSpecial.set(attribute, thisModel)
métodos? Ou há uma maneira diferente de fazer isso?