2012-12-03 4 views
11

Jaki jest standardowy sposób dostępu do zewnętrznych wartości zbiórki #each w pętli? npJak uzyskać dostęp do zewnętrznego {{}} #each wartość kolekcji w zagnieżdżonej pętli

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

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

podano Template.example.aaa, this wskazuje zbierania wewnętrznej.

nie mogę znaleźć sposób na dostęp do elementów outerCollection. Moje rozwiązanie jest jak poniżej, definiuję własną funkcję pomocnika. Czy jest to standardowy sposób Meteor, aby osiągnąć ten cel?

<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 
}); 

znalazłem similar question dla przypadku wewnętrznej dostępem obsługi zdarzeń.

+1

Myślę, że to wszystko. Jakie jest dokładnie pytanie? –

+0

dzięki za komentarz. Wysłałem to pytanie, ponieważ nie mam zaufania do mojego kodu i nie mogę znaleźć w tym celu przykładowego kodu meteorytów. Chcę wiedzieć, czy ktokolwiek wie bardziej sprytne wdrożenie. – hyde

+1

Oto lepszy sposób, nie trzeba rejestrowaćHerner jak wyżej, następująca składnia może działać: Template.example.myHelper = function (outItem, inItem) {/ * może uzyskać dostęp do elementu outerCollection przez outItem * /}; – hyde

Odpowiedz

1

Możesz skorzystać z poniższego kodu, aby sprowadzić zbiory zewnętrzne.

załóżmy, że masz kolekcję o nazwie jak Collection.Customer i Collection.RechargePlan i używasz zarówno w szablonie aktualizowania klienta.

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}} 

W powyższym kodzie ../rechargeplan jest rzeczywiście Customer.rechargeplan, ../ faktycznie poszedł o krok wyżej heirarchy a następnie obejrzano pole jeśli są dostępne, ponieważ klient jest już dostępny do szablonu, to pole jest odbierane.

Powiązane problemy