2012-12-03 11 views
11

Qual è il modo standard per accedere ai valori di raccolta #each esterni nel ciclo? per esempio:Come accedere al valore di raccolta esterno {{#each}} nel ciclo annidato

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

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

supra Template.example.aaa, this punti alla raccolta interna.

Non riesco a trovare il modo di accedere agli elementi di Raccolta esterna. La mia soluzione è come sotto, sto definendo la mia funzione di aiuto. È un modo Meteor standard per raggiungere questo scopo?

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

Ho trovato un similar question per il caso di interno accesso gestore di eventi.

+1

Penso sia così. Qual è esattamente la domanda? –

+0

grazie per il tuo commento. Ho postato questa domanda perché non ho fiducia nel mio codice e non riesco a trovare il codice di esempio di meteor per questo scopo. Voglio sapere se qualcuno conosce un'implementazione più intelligente. – hyde

+1

Ecco il modo migliore, non è necessario registerHelper come sopra, la seguente sintassi può funzionare: Template.example.myHelper = function (outItem, inItem) {/ * può accedere a outerCollection tramite outItem * /}; – hyde

risposta

1

È possibile utilizzare sotto il codice per recuperare raccolte esterne.

si supponga di avere collezione chiamata come Collection.Customer e Collection.RechargePlan e si utilizza sia in un modello per l'aggiornamento del cliente.

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

Nel codice di cui sopra, ../rechargeplan è in realtà Customer.rechargeplan, ../ effettivamente è andato un passo sopra gerarchia e quindi accessibile il campo, se disponibile, in quanto cliente è già disponibile per modello, è il campo è raccolto.

Problemi correlati