Моя цель - передать фильтрованные данные на мой контроллер, а затем в мой шаблон. Я пробовал не использовать фильтр, и все работает так, как ожидалось. Если я даже попытаюсь использовать фильтр, который пропускает все, я не получаю никаких данных. Я даже попробовал использовать false вместо true и возиться с списком аргументов фильтра.Проблемы с маршрутом Ember.js с фильтром
Я использую светильники с данными ember-data, чтобы проверить это. Я следую соглашениям с названиями, поэтому большая часть работы выполняется для меня под капотом. Кажется, что все работает, хотя (в противном случае первый пример также должен иметь проблему).
Works (поступает в контроллер и в конечном счете визуализируется на странице):
App.DomainDirRoute = Ember.Route.extend({
model: function(params) {
return this.store.find('domain_dir');
}
});
Сбой (контроллер получает пустой массив):
App.DomainDirRoute = Ember.Route.extend({
model: function(params) {
return this.store.filter('domain_dir', function(item){
return true;
});
}
});
UPDATE (ПОПЫТКА 1):
Хорошо, поэтому я попробовал пару вещей, основанных на ответе Сэма Селикова. Я определил 4 свойства (2 фильтра, одну карту, одну обычную копию) в контроллере и попытался отобразить их на макетной странице. Результатом является только свойство copyDomain.
Свойства в контроллере:
filteredDomains: Ember.computed.filterBy('domain', 'domain', true),
upperCaseDomains: Ember.computed.map('domain', function(domain, index) {
return domain.toUpperCase() + '!';
}),
filteredDomains2: function() {
return this.get("model").filterBy('domain', true);
}.property('[email protected]'),
copyDomains: function(){
result = [];
this.forEach(function(item) {
result.pushObject(item);
})
console.log(result);
return result;
}.property('[email protected]')
Mockup:
<ul>
<li>filteredDomains</li>
{{#each domainDir in controller.filteredDomains}}
<li>domainDir.domain</li>
{{/each}}
</ul>
<ul>
<li>filteredDomains2</li>
{{#each domainDir in controller.filteredDomains2}}
<li>domainDir.domain</li>
{{/each}}
</ul>
<ul>
<li>upperCaseDomains</li>
{{#each domainDir in controller.upperCaseDomains}}
<li>domainDir.domain</li>
{{/each}}
</ul>
<ul>
<li>copyDomains</li>
{{#each domainDir in controller.copyDomains}}
<li>domainDir.domain</li>
{{/each}}
</ul>
Я действительно не знал, где разместить фильтрацию, поэтому ваш совет по размещению очень ценится. Я пробовал ваши решения, но у меня все еще возникают проблемы. Я обновил свой вопрос с помощью подходов, которые я пробовал, и их результатов. На данный момент я могу обойти проблему с измененной версией свойства copyDomains (пройти через все), но я предпочел бы использовать способ Ember. – HSquirrel
Это решение сработало для меня, но я действительно озадачен, почему это происходит в первую очередь. Я думал, что 'Ember.Route # model' будет работать с любыми обещаниями ... – valo