簡體   English   中英

如何在每個幫助器的車把內使用其他模板值?

[英]How can I use other template values inside a handlebar each helper?

我有包含數組的json數據塊(示例)

var data = { firstName: "Alan", lastName: "Johnson", list: [1,2,3] };

我想使用#each語法循環遍歷數組中的項目,並為包含數組中的項目以及傳入的json數據的另一項的每個項目創建一個字符串。 這是我正在嘗試的:

var ui  = "<p>{{lastName}}, {{firstName}}</p>";
ui  = ui + "{{#each list}}";
ui  = ui + "    {{this}} - {{ firstName }}";
ui  = ui + "{{/each}}";

var template = Handlebars.compile(ui);

console.log(template(data));

但它沒有輸出我所期望的。 我得到這個(錯誤):

<p>Johnson, Alan</p>    1 -     2 -     3 -

但我想看看:

<p>Johnson, Alan</p>    1 -Alan     2 -Alan     3 -Alan

為什么我似乎無法在#each塊中使用json數據的其他部分? 有沒有辦法做到這一點?

由於使用{{#each}} ,您處於子上下文list ,現在您要訪問父上下文中的firstName ,因此可以使用{{../firstName}}來像這樣訪問它。

{{#each list}}
    {{this}} - {{../firstName}}
{{/each}}

文檔中

嵌套的每個塊可以通過基於深度的路徑訪問迭代變量。 要訪問父索引,例如,可以使用{{@ .. / index}}。

我是車把的新手,所以我不確定要搜索什么術語。 事實證明,我能夠找到答案,並想把我的問題保留下來,以防其他人遇到相同的問題。 事實證明,您不能僅使用{{firstName}}並按我的示例中的預期獲得Alan的原因是,您處於json數據中“列表”的上下文中。 要恢復到json數據的根,您需要使用如下語法:

var ui  = "<p>{{lastName}}, {{firstName}}</p>";
ui  = ui + "{{#each list}}";
ui  = ui + "    {{this}} - {{ ../firstName }}";
ui  = ui + "{{/each}}";

您可以在上方看到我在請求firstName值之前使用{{../firstName}}到根目錄下一級。 這對我有用,我希望它可以幫助其他人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM