父組件將數組傳遞給子組件。我需要循環訪問組件的JS文件中的數組,而不是其模板。循環通過JS中的傳入參數而不是模板
我知道我可以使用this.get('parameter')來訪問參數,但是在JS中它不像一個數組。
任何幫助將不勝感激!
父組件將數組傳遞給子組件。我需要循環訪問組件的JS文件中的數組,而不是其模板。循環通過JS中的傳入參數而不是模板
我知道我可以使用this.get('parameter')來訪問參數,但是在JS中它不像一個數組。
任何幫助將不勝感激!
這的確如你所期望的那樣工作! 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);
}
}
完美!非常感謝 – goodoldneon777
你是什麼意思它不表現像一個數組? 'this.get('parameter')'是訪問它的方式,就像你提到的那樣。 – locks
這是一個類似_prevArrangedContent,isLoaded等東西的超複雜類。可能是因爲我使用Ember Data。 – goodoldneon777
這是一種關係嗎?這可能是一個'PromiseArray'。您應該仍然可以像普通數組一樣使用它,因爲調用會代理已解析的內容,但如果沒有更多的細節信息,則很難弄清楚。 – locks