2016-09-06 4 views
0

Ich habe ausgiebig nach einer Antwort gesucht, also hoffe ich das Offensichtliche nicht verpasst zu haben.Suchoperator zum teilweisen Einfügen am Lenker

Ich benutze Lenker, um über ein Array von Objekten zu iterieren und eine Teilansicht abhängig von einer Eigenschaft für jedes Objekt auszuwählen.

Ich habe die Dokumentation für dynamische Partials sowie für den Nachschlageoperator und eine Reihe von Erklärungen online gesehen, aber ich kann nicht verstehen, wie die . und .. verwendet werden oder sich auf den aktuellen Kontext beziehen.

würde ich erwarten, den folgenden Code

{{#each data as |item|}} 
    {{> (lookup item 'type') }} 
{{/each}} 

für eine Art Eigenschaft auf jedes Objekt im Array zu suchen und beinhalten eine teilweise mit diesem Namen, aber die Suche ausgewertet undefined.

Ich habe gesehen zeigt Beispiele dieses anstelle

{{> (lookup . 'property') }} 

so meine Fragen:

  1. Was ist der richtige Weg ist, um item die bei der Suche zu beziehen?
  2. Was beziehen sich . und ..?

Danke.

EDIT: Hinzugefügt Datenobjekt und Vorlage von aktuellem Code (Datenobjekt wurde reduziert und die tatsächliche Einheit Namen geändert, um ‚item‘, aber ansonsten eigentlichen Code)

Aus den Daten

{ 
    "_links": { 
     "self": { "href": "/item/342" } 
    }, 
    "itemId": "342", 
    "datetime": "2012-10-06T04:13:00+00:00", 
    "itemType": "ITEM_TYPE", 
    "content": { 
    } 
}, 

Von der Vorlage

{{#each data as |item|}} 
    {{> (lookup item 'itemType') }} 
{{/each}} 

Fehler

{ 
    description: undefined, 
    fileName: undefined, 
    lineNumber: undefined, 
    message: "The partial undefined could not be found", 
    name: "Error"… 
} 
+0

Ihre '# each' sieht für mich getan werden, als ob es funktionieren soll. Vielleicht könnten Sie, wenn Sie Ihr Datenobjekt freigegeben haben, herausfinden, was das Problem ist. '.' ist ein Alias ​​für' this' und verweist auf das Objekt, auf das gerade zugegriffen wird. '../' zeigt eine Ebene zum Objekt des übergeordneten Bereichs. – 76484

+0

@ 76484 Danke. Das dachte ich über '.' und' ..', aber irgendwie schien es nicht für mich zu funktionieren. Ich hatte erwartet, dass entweder "item" oder "." Das richtige Objekt zum Nachschlagen übergeben würden, aber das nicht. Ich habe Daten und die Fehlermeldung hinzugefügt. – guioconnor

+0

Graben tiefer fand ich, dass der Controller Felder der Daten ausfiltert, bevor sie an die Vorlage übergeben. Die Syntax funktioniert zwar, aber ich musste das Feld "itemType" neu zuordnen, damit es sichtbar ist. – guioconnor

Antwort

1

Eine Lösung gefunden. Wie von @ 76484 bemerkt:

. ist Alias ​​für this und verweist auf das Objekt, auf das aktuell zugegriffen wird. ../ zeigt eine Ebene zum Objekt des übergeordneten Bereichs.

Das Nachschlagen im Beispiel kann entweder durch

{{#each data as |item|}} 
    {{> (lookup item 'itemType') }} 
{{/each}} 

oder

{{#each data}} 
    {{> (lookup . 'itemType') }} 
{{/each}} 
Verwandte Themen