我想在我的Ember模型中声明不会影响"脏"的瞬态属性。模型的状态。
目前,我在模型中声明它们是这样的:
eventId: DS.attr("string", {defaultValue: "", transient: true})
在序列化程序中忽略它们,因此它们不会发布到API:
App.ApplicationSerializer = DS.RESTSerializer.extend({
serializeAttribute: function(record, json, key, attribute) {
if (attribute.options.transient) { return; }
return this._super(record, json, key, attribute);
}
});
但我还要求那些属性不会改变"脏"对象的状态(用于跟踪和回滚而不触及这些)。
答案 0 :(得分:3)
原来解决方案非常简单。我需要一个Ember-Data没有跟踪的属性(它没有改变状态,并且在回滚后仍未触及)。
解决方案:声明"属性"没有DS.attr
。它实际上是一个普通的Ember Object属性。
答案 1 :(得分:0)
我不知道这是否是最佳方式,但您可以使用计算属性:
App.Person = DS.Model.extend({
name: Ember.computed(function(key, value) {
if (value) {
this.set('___name', value);
return value;
} else {
return this.get('___name');
}
}),
age: DS.attr('number')
});
然后只需在正常的模板中访问它:
{{input value=model.name}}
警告:您需要触发计算属性以初始设置模型上的值,例如:
this.store.push('person', {
id: 1,
age: 15,
});
this.store.find('person', 1).then(function(person) {
person.set('name', 'Kori')
});