2013-07-30 9 views
7

Ich verstehe, wie man die Datenquelle innerhalb von Lenker transversiert, aber ich bin über eine Situation gestolpert, die ich nicht ausarbeiten kann.Handlebars.js - Abrufen des übergeordneten Kontextes innerhalb einer jeden Schleife, einer if-Anweisung und eines untergeordneten Objekts

Mit "../" können Sie den übergeordneten Vorlagenbereich erreichen, aber beim Durchlaufen des untergeordneten Objekts eines Objekts scheint es das Objekt und nicht das untergeordnete Objekt zurückzugeben.

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

Der obige Code-Schnipsel funktioniert gut, wenn Sie durch ein Objekt namens ‚Inhalt‘ iterieren aber sobald man durch sie durchlaufen ist Kind ‚content.items‘ es nicht mehr gibt den richtigen Rahmen.

Hier ist eine Geige, die das Problem zeigt. http://jsfiddle.net/sidonaldson/MDdn2/

Kann jemand Licht auf was falsch ist werfen?

+0

Ich bin nicht ganz sicher, was mit Ihrem aktuellen Code vor sich geht, aber eine einfache Lösung wäre, den '{{mit}} 'Helfer zu verwenden, um den äußeren Bereich zu speichern. Es wäre wahrscheinlich auch einfacher zu lesen. – GJK

+0

GJK - wenn Sie das in einer Antwort demonstrieren wollen, werde ich es als solches markieren. Irgendwie klingt das, was ich brauche! – sidonaldson

+0

'# if' erstellt ein neues Nest, so dass ich nur daran denken kann, dass es aus dem Eltern-Nest herausspringt, genau darüber. Ich bin nicht sicher, ob es Ihre Frage beantwortet, aber für die Nachwelt scheint das Hinzufügen des #if nest und des Inhaltsnests zum Pfad zu funktionieren ... '

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

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

Antwort

2

Es stellt sich heraus, dass mein ursprünglicher Gedanke falsch war. Ich habe Lenker.js nur im Kontext von Ember.js verwendet. Ember bietet einige zusätzliche Helfer, die in normalen Lenkern nicht verfügbar sind, also war das keine Option. Aber ich habe anscheinend dein Problem herausgefunden. Prüfen 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}} 

Ich bin nicht sicher, warum es nicht in erster Linie nicht funktioniert, aber die with Helfer verwendet wird, dann wird der each Helfer schien zu funktionieren. Hoffentlich bin ich nahe dran, was du wolltest.

+0

Danke für die Antwort, aber die Demo funktioniert nicht! – sidonaldson

Verwandte Themen