2016-02-08 27 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分支發佈,其中一些將更容易與handlebars子表達式一起使用。

現在,你可能會想使自己的助手,做了排序,那麼你可以使用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