2013-07-30 14 views
7

Capisco come attraversare l'origine dati all'interno di Handlebars ma sono incappato in una situazione che non riesco a risolvere.Handlebars.js - Ottenere il contesto genitore all'interno di ogni ciclo, un'istruzione if e un oggetto figlio

Utilizzando "../" è possibile raggiungere l'ambito del modello principale ma, durante l'iterazione attraverso il figlio di un oggetto, sembra restituire l'oggetto e non il figlio.

{{#each content.items}} 
{{#if prop}} 
<p>{{prop}} + {{../../variable}}</p> 
{{/if}} 
{{/each}} 

Il frammento di codice di cui sopra funziona bene se eseguire iterazioni attraverso un oggetto chiamato 'contenuto', ma non appena si scorre attraverso di essa del bambino, 'content.items' non è più restituisce l'ambito giusto.

Ecco un violino che dimostra il problema. http://jsfiddle.net/sidonaldson/MDdn2/

Qualcuno può far luce su ciò che è sbagliato?

+0

Non sono del tutto sicuro di cosa stia succedendo con il codice corrente, ma una soluzione semplice sarebbe usare l'helper '{{with}}' per salvare l'ambito esterno. Probabilmente sarebbe anche più facile da leggere. – GJK

+0

GJK - se vuoi dimostrarlo in una risposta lo contrassegnerò come tale. Sembra come quello di cui ho bisogno! – sidonaldson

+0

'# if' crea un nuovo nido, quindi l'unica cosa che posso pensare è che salta fuori dal nido genitore appena sopra di esso. Non sono sicuro che risponda alla tua domanda ma, per i posteri, sembra che l'aggiunta del nido #if e il contenuto del percorso al percorso sembra funzionare ... '

{{prop}} + {{../../content/variable }}

'http://jsfiddle.net/MDdn2/3/ – Shanimal

risposta

2

Si scopre che il mio pensiero originale era sbagliato. Ho usato solo Handlebars.js nel contesto di Ember.js. Ember fornisce alcuni helper extra che non sono disponibili in manubri semplici, quindi non era un'opzione. Ma mi sembra di capire il tuo problema. Controllare this fiddle.

<p>IN CONTENT</p> 
{{#with content}} 
{{#each items}} 
{{#if prop}} 
<p>{{prop}} + {{../../variable}}</p> 
{{/if}} 
{{/each}} 
{{/with}} 
<p>OUTSIDE CONTENT</p> 
{{#each items}} 
{{#if prop}} 
    <p>{{prop}} + {{../../variable}}</p> 
{{/if}} 
{{/each}} 

Io non sono sicuro perché non ha funzionato, in primo luogo, ma utilizzando il with helper, quindi l'assistente each sembrava funzionare. Spero di essermi avvicinato a quello che volevi.

+0

Grazie per la risposta ma la demo non funziona! – sidonaldson

Problemi correlati