2016-02-08 14 views
0

Предполагая, что у меня есть что-то вроде:Получить первый элемент в отсортированном коллекции

{{#each pageElements}} 
    {{#is pageElement "news"}} 
    {{#withSort pages "data.posted" dir="desc"}} 
     <a href="/{{relativeLink}}"> 
     {{formatDate data.posted "%d.%m.%Y"}}: {{data.title}} 
     </a> 
    {{/withSort}} 
    {{/is}} 
{{/each}} 

Как бы я только первый элемент, который withSort выкладывает?

Я думаю, что я могу использовать вспомогательный элемент коллекции first для этого (http://assemble.io/helpers/helpers-collections.html), но я не смог получить синтаксис правильно.

ответ

1

Помощники в ручках-помощниках, которые были созданы для grunt-assemble, не обрабатывают некоторые вещи, которые вы хотите сделать для этого конкретного случая.

Мы работаем над тем, чтобы опубликовать ветвь dev, и некоторые из них будут проще использовать с подвыражениями руля.

На данный момент, вы, вероятно, хотите сделать свой собственный помощник, который делает сортировку, то вы можете использовать first:

Сделать sort.js вспомогательный файл с:

var get = require('get-value'); 

module.exports = function sort(array, field, options) { 
    var arr = cloneArray(array); 
    if (typeof options === 'undefined') { 
    options = field; 
    field = null; 
    arr = arr.sort(); 
    } else { 
    arr = arr.sort(sortBy(field)); 
    } 

    if (options.hash && options.hash.dir === 'desc') { 
    arr = arr.reverse(); 
    } 
    return arr; 
}; 

function cloneArray(arr) { 
    var len = arr.length, i = 0; 
    var results = new Array(len); 
    while(i++ < len) { 
    results[i] = arr[i++]; 
    } 
    return results; 
} 

function sortBy(prop) { 
    return function(a, b) { 
    var aVal = get(a, prop); 
    var bVal = get(b, prop); 
    if (aVal > bVal) { 
     return 1; 
    } else { 
     if (aVal < bVal) { 
     return -1; 
     } 
    } 
    return 0; 
    } 
} 

Регистрация помощника с собрать и используйте в шаблоне:

{{#each pageElements}} 
    {{#is pageElement "news"}} 
    {{#withFirst (sort pages "data.posted" dir="desc")}} 
     <a href="/{{relativeLink}}"> 
     {{formatDate data.posted "%d.%m.%Y"}}: {{data.title}} 
     </a> 
    {{/withFirst}} 
    {{/is}} 
{{/each}} 

Это должно получить то, что вам нужно. Надеюсь, поможет.

+0

Вау - большое вам спасибо за это! Пойдемте позже, и, надеюсь, это будет трюк. – boz