2016-07-27 113 views
3

我使用塊幫助器#each創建了一個列表,但我無法在每個循環內部將變量傳遞給我的部分。handlebars:將變量傳遞給每個內部的部分

{{#each a-z.letters}} 
    {{this}} /*[1]*/ 
    <li class="list-inline__item"> 
     {{>button btn="btn-text" addClass='-large' link='letter/{{this}}' label='{{this}}'/*[2]*/}} 
    </li> 
{{/each}} 

鏈接部分:

<a href="{{link}}" class="btn-text {{addClass}}">{{label}}</a> 

的輸出是:

<ul class="list-inline"> 
    A /*[1]*/ 
    <li class="list-inline__item"> 
     <a href="letter/{{this}}/*[2]*/" class="btn-text -large">{{this}}/*[2]*/</a> 
    </li> 
    .... 

[1]剛用於測試和它的工作原理

[2]如果我想通過它在一個部分裏面它不會渲染我的參數

UPDATE

所以這是我的幫手現在擴展我的href與網址。

Handlebars.registerHelper('updateLink', function(options){ 
    var insertAt = "href="; 
    var content = options.fn(this).trim(); 
    var pos = content.indexOf(insertAt) + insertAt.length+1; // +1 for the quotation marks 
    content = content.slice(0, pos) + options.hash.url + content.slice(pos, content.length); 
    return new Handlebars.SafeString(content); 
}); 

鏈接部分:

{{#updateLink url="letters/"}} 
    {{>button link=this label=this btn="btn-text" addClass='-large'}} 
{{/updateLink}} 

回答

7

您不能使用{{}}括號語法數據成員評估時,你已經是一個大括號內。你可以,但是,簡單地引用成員,沒有引號包裹它,它就會進行評估:

{{>button btn="btn-text" addClass='-large' link=this label=this}} 

你會注意到,我上面的例子中不包括「信/」前綴link值。把手沒有辦法連接字符串。要達到此目的,您可以選擇以下選項之一:

  • 使用助手(您自己或他人的)。
  • 將前綴作爲附加參數傳遞給您的部分。
  • 對部分模板中的前綴進行硬編碼。
  • 在模板數據中包含連接的字符串(a-z.letters)。