У меня есть модель Phone
. Я хочу, чтобы кэшировать все телефоны на моем приложении:Кэширование и ходьба ArrayController
cachePhones : function() {
this.set('phones', this.Phone.find());
},
И получить страны, для которых у меня есть доступные телефоны:
getCountries : function() {
var phones = this.get('phones.content');
var countries = new this.dataSet(), country;
console.log('phones=%o', phones.length);
for (var index = 0, length = phones.length; index < length; index++) {
country = phones[index].record.get('country');
console.log('Adding %o', country);
countries.add(country, true);
}
console.log('countries=%o', countries.keys());
return countries.keys();
},
(dataSet
это просто набор реализация в JavaScript)
I я не уверен, что это правильный путь для ходьбы ArrayController
:
- do I действительно нужно получить доступ к
content
? - действительно ли мне нужно получить
record
?
Это похоже на хакинг вокруг моего пути в внутренних помещениях. Я пробовал до этого:
var phones = this.get('phones');
var countries = new this.dataSet(), country;
for (var index = 0, length = phones.length; index < length; index++) {
country = phones[index].country;
countries.add(country, true);
}
Но он не работал вообще. Каков канонический способ ходьбы ArrayController
?
Вы можете использовать Ember.Set.create(); вместо нового this.dataSet() ;. У Ember есть своя реализация Set;) –
Не знаю, спасибо, спасибо! – dangonfast