循环传入JS中的传入参数而不是模板

时间:2016-02-19 01:50:02

标签: ember.js

父组件将数组传递给子组件。我需要在组件的JS文件中循环遍历该数组,而不是它的模板。

我知道我可以使用this.get('parameter')访问参数,但在JS中它的行为不像数组。

任何帮助将不胜感激!

1 个答案:

答案 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);
  }
}