2012-12-03 72 views
11

在循環中訪問外部#each集合值的標準方式是什麼? 例如:如何在嵌套循環中訪問外部{{#each}}集合值

<template name="example"> 
    {{#each outerCollection}} 
    <tr> 
    {{#each innerCollection}} 
     <td>{{aaa}}</td> 
    {{/each}} 
    </tr> 
    {{/each}} 
</template> 

Template.example.aaa = function(){ 
    // cannot access outerCollection values 
} 
在上述Template.example.aaa

this點到內收集。

我無法找到訪問outerCollection項目的方法。 我的解決方案如下所示,我正在定義自己的幫助器功能。 這是一個標準的Meteor方式來達到這個目的嗎?

<template name="example"> 
    {{#each outerCollection}} 
    <tr> 
    {{#each innerCollection}} 
     <td>{{myHelper ../outerItem innerItem}}</td> 
    {{/each}} 
    </tr> 
    {{/each}} 
</template> 

Handlebars.registerHelper('myHelper', function (outItem, inItem) { 
    // can access outerCollection via outerItem 
}); 

我發現了一個similar question對於內部事件處理程序的訪問情況。

+1

我認爲就是這樣。問題究竟是什麼? –

+0

感謝您的評論。我發佈這個問題是因爲我對自己的代碼沒有信心,因此無法找到流星示例代碼。我想知道是否有人知道更聰明的實現。 – hyde

+1

這裏是更好的方法,不需要registerHelper,如上所述,下面的語法可以工作:Template.example.myHelper = function(outItem,inItem){/ *可以通過outItem * /}訪問outerCollection item; – hyde

回答

1

您可以使用下面的代碼來獲取外部集合。

假設你有收集稱爲Collection.CustomerCollection.RechargePlan,你都在更新客戶模板使用。

Customer = {"name":"James", "rechargeplan":"monthly"}; 
RechargePlan = [{"rechargeplan": "monthly"},{"rechargeplan": "yearly"}]; 

//Inside template, Bydefault Customer is available. 
{{#each RechargePlan}} 
    {{#if equals ../rechargeplan rechargeplan}} 
     //Hurray Plan matches 
    {{/if}} 
{{/each}} 

在上面的代碼中,../rechargeplan實際上是Customer.rechargeplan,實際上../了一步上述層次結構,然後訪問場(如果可用),因爲客戶已經提供給模板,它的領域是拾起。

相關問題