我通过一系列设置调用设置了很多属性,例如
this.set('prop1', value1);
this.set('prop2', value2);
.......
Run Code Online (Sandbox Code Playgroud)
有没有办法在一次调用中执行此操作(类似于创建对象时)?例如
this.setMultiple({prop1: value1, prop2: value2});
Run Code Online (Sandbox Code Playgroud)
我仍然没有完全理解Ember的继承模型.也许是沿袭的reopen?
oru*_*uen 55
实际上有一个功能:setProperties.你可以像这样使用它:
obj.setProperties({prop1: value1, prop2: value2})
Run Code Online (Sandbox Code Playgroud)
obj应该是的例子Ember.Object.
Luk*_*lia 28
正如@oruen 在正确答案中指出的那样,您正在描述setProperties(...).
需要注意的一个潜在问题是,根据JS规范,对象的属性顺序是不确定的.(请参阅"for(... in ...)"循环中的元素顺序).
如果您不关心订单,或者确信您要定位的JS实施将尊重您的订单,setProperties应该适合您.
设置多个属性时,应考虑使用Ember.beginPropertyChanges()和Ember.endPropertyChanges().前者暂停观察者触发器,后者恢复它并冲洗.这种方法可以提高性能.setProperties为您完成此操作.
另外值得注意的是Ember.changeProperties,它接受一个回调并调用Ember.beginPropertyChanges,然后调用你的回调,然后调用Ember.endPropertyChanges,即使你的回调引发异常.用法示例:
Ember.changeProperties(function() {
obj1.set('foo', mayBlowUpWhenSet);
obj2.set('bar', baz);
});
Run Code Online (Sandbox Code Playgroud)
希望有所帮助!
| 归档时间: |
|
| 查看次数: |
14493 次 |
| 最近记录: |