我正在尝试构建一个动态更新 Meteor 项目中的会话变量的模型。我知道纯 JSON 不应该存储在骨干模型中,所以我设置了一个特殊模型,如下所示:
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
},
将“价格”和“日期”存储在自己的模型中:
//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
}
});
如图所示,当Special模型的属性发生变化时,它应该为发生变化的属性调用display,然后将Session var设置为模型。但是,如果我的 DateModel 或 PriceModel 发生更改,它似乎不会触发 Special 模型上的更改事件。每个“DateModel”和“PriceModel”都应该有自己的this.on('change', ...)
调用Special.set(attribute, thisModel)
方法的方法吗?还是有其他方法可以解决这个问题?