父组件将数组传递给子组件。我需要在组件的JS文件中循环遍历该数组,而不是它的模板。
我知道我可以使用this.get('parameter')访问参数,但在JS中它的行为不像数组。
任何帮助将不胜感激!
答案 0 :(得分:1)
这确实可以正常运作! Checkout this ember-twiddle.
如果组件外部有一个数组,则会在组件内部获得一个数组!
所以你的问题就在另一个地方。
Ember本身总会给你一个Ember.Enumerable。您可以对它们使用.forEach(x => { ...doStuff.. })
。
Ember-data为商店运营和关系提供PromiseArray
。
如果您在ComputedProperty(CP)中,.forEach
可以安全使用PromiseArray
,这取决于PromiseArray
,因为当Promise结算时CP将再次触发。在CP之外,例如在一个钩子或一个动作中你应该用.then(arr => arr.forEach(item => doSomething(item)))
来解析Promise!
所以这是安全的:
all: Ember.computed('myArr', {
get() {
let str = '';
this.get('myArr').forEach(item => str+=item.get('name'));
return str;
}
})
这是安全的:
actions: {
alertIt() {
this.get('myArr').then(arr => {
let str = '';
arr.forEach(item => str+=item.get('name'));
alert(str);
});
}
}
但这是错误:
actions: {
alertIt() {
let str = '';
this.get('myArr').forEach(item => str+=item.get('name'));
alert(str);
}
}