Как вы можете отфильтровать список данных для рендеринга в несколько розеток в emberjs. То, что у меня сейчас не работает, но может помочь вам понять, чего я хочу достичь.Как вы можете отфильтровать список данных для рендеринга в несколько розеток в emberjs
Я могу решить эту проблему, создав несколько файлов-шаблонов file-list.hbs (где я меняю файл в файле fileList1 или fileList2, ...), но это не кажется правильным.
То, что я хочу достичь
У меня есть страница документы, где я хочу перечислить весь документ в списке файлов (см файл светильники). Но вместо того, чтобы распечатывать один список файлов, я хочу разбить списки, поэтому у меня есть несколько списков в соответствии с фильтром.
Пожалуйста, ознакомьтесь с кодом, чтобы понять его лучше ^^ Может ли кто-нибудь помочь? :)
File.FIXTURES
App.File.FIXTURES = [
{
id: 1,
showHomepage: false,
filter: 'filter1',
url: '/file1.pdf',
description: 'file1'
},
{
id: 2,
showHomepage: false,
filter: 'filter2',
url: '/file2.pdf',
description: 'file2'
},
{
id: 3,
showHomepage: true,
filter: 'filter2',
url: '/file3.pdf',
description: 'file3'
},
{
id: 4,
showHomepage: true,
filter: 'filter3',
url: '/file4.pdf',
description: 'file4'
}
];
Маршрут
App.InfoDocumentenRoute = Ember.Route.extend({
model: function() {
var store = this.store;
return Ember.RSVP.hash({
fileList1: store.find('file' , { filter: "filter1" }),
fileList2: store.find('file' , { filter: "filter2" }),
fileList3: store.find('file' , { filter: "filter3" })
});
},
renderTemplate: function() {
this.render('file-list', { // the template to render
into:'info.documenten', // the route to render into
outlet: 'file-list-filter1', // the name of the outlet in the route's template
controller: 'file' // the controller to use for the template
});
this.render('file-list', { // the template to render
into:'info.documenten', // the route to render into
outlet: 'file-list-filter2', // the name of the outlet in the route's template
controller: 'file' // the controller to use for the template
});
this.render('file-list', { // the template to render
into:'info.documenten', // the route to render into
outlet: 'file-list-filter3', // the name of the outlet in the route's template
controller: 'file' // the controller to use for the template
});
}
});
информация/documents.hbs
{{ outlet file-list-filter1 }}
{{ outlet file-list-filter2 }}
{{ outlet file-list-filter3 }}
файл-list.hbs
<ul class="download-list">
{{#each file in file}}
<li class="download-list__item">
<a {{bind-attr href=file.url}} target="_blank" class="download-list__link">
<i class="icon-download download-list__link__icon"></i>
{{file.description}}
</a>
</li>
{{else}}
<li>
Geen documenten beschikbaar.
</li>
{{/each}}
Почему вы желая заполнить несколько точек на этом пути? Можете ли вы описать свои требования немного больше? Мне кажется, может быть гораздо более эффективный способ получить желаемый конечный результат. – gravityplanx
@gravityplanx Хорошо, добавлено еще несколько объяснений ... Надеюсь, это станет более ясным. Да, у меня есть сильное чувство, что должен быть более эффективный способ, но он, похоже, пока не может его найти. Довольно неожиданно для emberjs. –
Пробовал ли вы просто встраивать '{{#each}}' в свой файл- list.hbs? Что-то вроде: '{{#each file-list in model}} {{#each file in file-list}}' (обязательно сохраните данные в массиве на вашей модели, чтобы это работало). – gravityplanx