将本机数组/对象转换为 Ember.Array/Ember.Object 的最佳实践
Best practise to transform native array/object into Ember.Array/Ember.Object
我有一个余烬组件,期望将参数作为对象数组。默认情况下,此参数将是一个包含本机对象的本机数组。我想将此数组转换为包含 ember 对象的 ember 数组。
我在想类似的事情,但这每次都会创建一个无限循环,触发观察者:
export default Ember.Component.extend({
content: null,
contentDidChange: function () {
var content = Ember.A();
this.get('content').forEach(function (item) {
content.addObject((item.constructor.toString() !== 'Ember.Object') ? Ember.Object.create(item) : item);
});
this.set('content', content);
}.observes('content'),
});
这样做的最佳做法是什么?
谢谢
您可以在组件首次启动时修改初始参数didInsertElement
如下所示:
App.ArrContentComponent = Ember.Component.extend({
content: null,
modifyContent: function(){
var content = this.get('content').map(function(item){
return Ember.Object.create({ name: item });
});
this.set('content', content);
}.on('didInsertElement')
});
这里的工作示例
如果你在组件中需要对象是因为你正在做this.get(..
那么你可以通过Ember.get(..
来绕过。
如果不是这种情况,那么我建议将组件绑定到转换后的属性,而不是原始content
。
transformedContent: null,
makeItem: function(item) {
return Ember.Object.create(item);
}),
cloneItems: function() {
this.set('transformedContent', this.get('content').map(this.makeItem));
}.observes('content'),
如果你想要最佳实践,那么我会创建一个 计算数组 ,它会在项目来来去去时转换它们,您将能够重复使用。
transformedContent: App.computed.objectArray('content')
相关文章:
- 强制模板刷新ember.js
- Ember Data DS.Model's set函数不起作用
- 函数未在Object.keys或Object.getOwnPropertyNames下列出,但可以调用
- Ember.js-接口状态应该存储在哪里
- 在ember/handlers中使用value和valueBinding有什么区别
- delete在Object上效率低下,但在DOM Element's的数据属性,与null out相比
- 当在Ember中点击一个项目时,我如何将一个活动类添加到项目列表中
- Uncaught TypeError:undefined不是函数-ember js
- 有没有一种方法可以列出Ember.Object的所有绑定
- Ember.js with EmberFire Object - 如何使用数组属性
- 如何将Ember.Object实例与 #each 循环一起使用
- 将本机数组/对象转换为 Ember.Array/Ember.Object 的最佳实践
- (Ember.run.throttle)Object Function在Ember.Mixin中没有方法“throttl
- Ember控制器计算的属性(Object类型)更新不起作用
- Ember.Object中的多个属性或单个观察者
- EmberJS如何包含另一个Ember.Object文件
- Ember.js Object #
- 未捕获的类型错误:对象原型在ember.js上只能是Object或null
- Ember.js-使用removeObject只删除一个Object实例
- Ember.js Handlebars BoundHelper Uncaught TypeError: Object #