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
}
});
示されているように、特殊モデルの属性が変更されると、変更された属性のdisplayを呼び出してから、Session変数をモデルに設定する必要があります。ただし、DateModelまたはPriceModelが変更された場合、Specialモデルで変更イベントがトリガーされたようには見えません。各「DateModel」と「PriceModel」には、this.on('change', ...)
メソッドを呼び出す独自のメソッドが必要Special.set(attribute, thisModel)
ですか?それとも、これについて別の方法がありますか?