2017-09-18 1 views
0

Berücksichtigen Sie den folgenden Code.So verweisen Sie die übergeordnete Vorlage in das Quickform-Attribut _id

{{#each assignments}} 
    {{#with eachClientDetails}} 
    {{#quickRemoveButton collection=assignment _id=this._id }} 
     Delete 
    {{/quickRemoveButton}} 
    {{/with}} 
{{/each}} 

In obigen Code, ich bin Iterieren jedes assignment und jede assignment hat einzelne Client Details. Mit jedem Client Detail Ich füge Löschen hinzu.

Helper:

eachClientDetails(){ 
    var client = Clients.find({_id: this.clientId}).fetch()[0]; 
    console.log(client); 
    return client; 
} 

Aber das Problem ist, während Attribute _id von quickForm zuweisen, kann ich nur Daten aus aktuellem Kontext zuordnen (das heißt this._id.). Alles, was ich brauche, ist Zugriff auf den Kontext von assignment (gewünscht wie _id=../_id). Aber ich unten Fehlermeldung erhalten,

Can only use `this` at the beginning of a path. 
Instead of `foo.this` or `../this`, just write `foo` or `..`. 

Ist es möglich, unter Verwendung eines beliebigen Helfer und so die übergeordneten Vorlagen erhalten _id

+0

nicht '_id Hat = _id' arbeiten? Sie befinden sich bereits im 'eachClientDetails'-Kontext, also besteht keine Notwendigkeit für' ../ ' – Styx

+0

Ich möchte auf die ID von' Zuweisungen' zugreifen. –

+0

Ah, warum verwenden Sie '#with eachClientDetails'? – Styx

Antwort

1

Ihr Problem Kontexten mit dem Überschreiben durch die Verwendung #each in und #let statt #each gelöst werden könnten und #with:

{{#each assignment in assignments}} 
    {{#let client=(eachClientDetails assignment)}} 
    {{#quickRemoveButton collection=assignment _id=assignment._id }} 
     Delete {{client.name}} 
    {{/quickRemoveButton}} 
    {{/let}} 
{{/each}} 

Hier {{client.name}} wurde nur um zu zeigen, wie hinzugefügt client ‚s Felder zuzugreifen.

Und Code Helfer:

eachClientDetails(assignment){ 
    var client = Clients.findOne({_id: assignment.clientId}); 
    console.log(client); 
    return client; 
} 
+1

Plus, die Verwendung von '#each in' und' # let' anstelle von '# each' und' # with' ist eine empfohlene Vorgehensweise, die von der BlazeJS-Dokumentation empfohlen wird. http://blazejs.org/guide/spacebars.html#Each-and-With –

+0

@ GaëtanRouziès Ja, danke, ich habe vergessen, das zu erwähnen :) – Styx

+0

@styx: danke für die Antwort. Ich habe heute etwas Neues gelernt. Ich werde es überprüfen und Sie wissen lassen. –

Verwandte Themen