Если я хочу добавить нестандартное свойство к моей базовой модели, лучше ли это сделать это? Есть ли лучший способ или совершенно другой подход к функциональности, которую я хочу достичь?defineProperty on Backbone model
var myModel = Backbone.Model.extend({
defaults:{
monthly_amount: 100
},
initialize: function(model, options){
var m = this;
Object.defineProperty(this,"yearly_amount",{
get: function() {
return (m.get("monthly_amount") * 12);
},
set: function(value) {
m.set("monthly_amount", (value/12));
}
});
}
});
Спасибо!
Редактировать: свойство «виртуально», я не хочу, чтобы оно находилось в атрибутах модели при сохранении модели на сервере.
просто перекрывая Будет ли сохранить только те поля, которые вы хотите выбрать? http://jsfiddle.net/hEN88/1/ – Josh
Не так, потому что yearly_amount не всегда будет в правильном отношении к Monthly_amount, если я добавлю его как отдельный атрибут и просто исключим его в метод сохранения. – homtg
Когда я хочу переходное поле в модели, я просто создаю поле для самого объекта. Затем я добавляю то, что мне нужно во время выполнения в этом поле, и создаю funtions, чтобы иметь дело с ним вместо вызова set/get модели. – Joqus