7.7 Models -- Working with Records
Modifying Attributes
1. 一旦一条record被加载,你可以开始改变它的属性。在Ember.js对象中属性的行为就像正常的属性。作出改变就像设置你想要改变的属性一样简单:
var tyrion = this.store.findRecord('person', 1); // ...after the record has loaded tyrion.set('firstName', "Yollo");
2. 对于修改属性来说,所有的Ember.js的方便性都是可用的。例如,你可以使用Ember.Object的incrementProperty辅助器:
person.incrementProperty('age'); // Happy birthday!
3. 通过检查它的isDirty属性,你可以告诉一条发生显著改变的record是否被保存了。通过使用changedAttributes函数,你也可以发现record的哪一部分发生了变化并且原始值是什么。changedAttributes返回一个对象,它的keys是发生变化的属性并且值是一个values数组[oldValue, newValue]。
person.get('isAdmin'); //=> false person.get('isDirty'); //=> false person.set('isAdmin', true); person.get('isDirty'); //=> true person.changedAttributes(); //=> { isAdmin: [false, true] }
4. 在这一点上,你可以通过save()持久化你的变化或者你可以回滚你的改变。调用rollback()还原所有changedAttributes到原始值。
person.get('isDirty'); //=> true person.changedAttributes(); //=> { isAdmin: [false, true] } person.rollback(); person.get('isDirty'); //=> false person.get('isAdmin'); //=> false person.changedAttributes(); //=> {}