2017-12-26 30 views
0

das ist das Modell, das ich zu meinem Lenker Vorlage passierenIterieren über Objekte in Express-Lenker

module.exports = function(showHeader, userId){ // the data model 
    return { 
    userId: userId, 
    seminars: userSeminars; 
    }; 
}; 

var userSeminars = [{ // some information 
    seminarId: 1, 
    isRated: true 
}, { 
    seminarId: 2, 
    isRated: false 
}]; 

und als meine Vorlage Rendering verwende ich HTML-Code

{{#each seminars}} 
    <div class="seminarContainer"> 

     {{#if isRated}} 
      <button onclick="loadStatistics({{seminarId}}, {{userId}})">Do Something 1</button> 
     {{else}} 
      <button onclick="loadQuestionnaire({{seminarId}})">Do Something 2</button> 
     {{/if}} 
    </div> 
{{/each}} 

aber wenn das Debuggen, {{userId}} ist nicht definiert. Ich ging für diese Testroutine und schreiben Sie es oben die jede Schleife

$(document).ready(function() { 
    alert({{userId}}); // this works 
}); 

userId nicht undefiniert ist. Beim Iterieren über das Array ist es jedoch undefiniert. Wie kann ich den Array-Bereich innerhalb der Schleife verlassen? Ich müsste auf das Datenmodellobjekt zugreifen, nicht auf ein Attribut im Array.


EDIT

Access a variable outside the scope of a Handlebars.js each loop

Wenn ich den Umfang verlassen will, kann ich {{../userId}}

Innerhalb der Schleife verwenden

<p>{{../userId}}</p>

funktioniert gut, aber wenn dies für Parameter wie

onclick="loadStatistics({{seminarId}}, {{../userId}})"

der zweite Parameter ist nicht definiert werden. Ich

Antwort

1

Nach kurzer Suche fand diese:

Access a variable outside the scope of a Handlebars.js each loop

Ich werde es zusammenzufassen, gibt es eine durch Lenker gegeben Option verwenden, um die ../ Syntax einen Verweis auf den übergeordneten Bereich zu machen.

So zum Beispiel:

<button onclick="loadStatistics({{seminarId}}, {{../userId}})">Do Something 1</button>


EDIT:

Mit weiteren Suche fand ich auch this answer auf eine ähnliche Frage. Anscheinend, weil Sie eine andere Ebene in der Scope-Kette gegangen sind, als Sie eine #if deklariert haben, müssen Sie dies auch berücksichtigen.

{{#if isRated}} 
    <button onclick="loadStatistics({{seminarId}}, {{../../userId}})">Do Something 1</button> 
{{else}} 
    <button onclick="loadQuestionnaire({{seminarId}})">Do Something 2</button> 
{{/if}} 
+0

hm ja, das ist ein guter Anfang, aber wenn in Parameter übergeben 'Onclick = "loadStatistics ({{seminarId}}, {{../ userId}})"' es ist noch nicht definiert. Beim Schreiben '

{{../userId}}

' funktioniert es – Question3r

+0

Ich habe meine Antwort bearbeitet, bitte versuchen Sie es und lassen Sie mich wissen, wie es ging. – fingeron