2016-02-19 15 views
0

父組件將數組傳遞給子組件。我需要循環訪問組件的JS文件中的數組,而不是其模板。循環通過JS中的傳入參數而不是模板

我知道我可以使用this.get('parameter')來訪問參數,但是在JS中它不像一個數組。

任何幫助將不勝感激!

+0

你是什麼意思它不表現像一個數組? 'this.get('parameter')'是訪問它的方式,就像你提到的那樣。 – locks

+0

這是一個類似_prevArrangedContent,isLoaded等東西的超複雜類。可能是因爲我使用Ember Data。 – goodoldneon777

+0

這是一種關係嗎?這可能是一個'PromiseArray'。您應該仍然可以像普通數組一樣使用它,因爲調用會代理已解析的內容,但如果沒有更多的細節信息,則很難弄清楚。 – locks

回答

1

這的確如你所期望的那樣工作! Checkout this ember-twiddle.

如果你在組件外部有一個數組,你將在組件內部得到一個數組!

所以你的問題是在一個完全的其他地方。

Ember本身總是會給你一個Ember.Enumerable。你可以使用.forEach(x => { ...doStuff.. })

Ember-data爲您提供PromiseArray商店運營和關係。

您可以在PromiseArray使用.forEach安全,如果你在這取決於PromiseArray一個ComputedProperty(CP),因爲當無極解決了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); 
    } 
} 
+0

完美!非常感謝 – goodoldneon777