2012-04-02 9 views
5

BeiWie man einen Hash in mustache.js

a = { 
    foo : { ... }, 
    bar : { ... }, 
    zap : { ... } 
} 

ich will über sie iterieren aber da die Tasten unterschiedlich sind Ich bin nicht sicher, wie man in Mustache.js dieser Hash iterieren

der Ausgang wird so etwas wie diese foo aussehen: (Inhalt hier)

+0

Können Sie das ein bisschen genauer beschreiben? Möchten Sie die Elemente 'foo',' bar' und 'zap' oder die Schlüssel selbst iterieren? – ZeissS

+0

@ZeissS bearbeitet * – samccone

Antwort

4

Wenn Sie den Schlüssel in dem verschachtelten Objekt kennen, die Sie abrufen sind versuchen, können Sie eine Funktion verwenden.

siehe: http://jsfiddle.net/jimschubert/zPWDJ/

js:

$(function() { 
    var names = { 
     "a": [ 
      {"foo": { "name": "foo name"}}, 
      {"bar": { "name": "bar name"}}, 
      {"zap": { "name": "zap name"}} 
     ], 
     "n": function() { 
      var self = this; 
      var n = ""; 
      Object.keys(self).forEach(function(k, v) { 
       if (typeof self[k] == "object") { 
        if(!n) n = self[k]["name"]; 
       } 
      }); 
      return n; 
     } 
    }; 

    var template = $('#template').html(); 
    var out = $('#output'); 
    var html = Mustache.to_html(template, names); 
    console.log(html); 
    out.html(html); 
});​ 

html:

<script id="template" class="template" type="text/x-mustache"> 
{{#a}} 
<p>{{n}}</p> 
{{/a}} 
</script> 

<h1>Output</h1> 
<div id="output"> 
</div> 
​ 

Dies setzt natürlich voraus, Ihre Daten ist ein Array von Objekten (die a in Ihrem Beitrag wäre ein Schlüssel von einem größeren Array, vielleicht?) Wenn Sie kein Array haben, sehe ich nicht, warum Sie nicht in der Lage sein würden, dies für ein Objekt anzupassen und eine Getter-Funktion für wha zu machen Eigenschaften jedes gesuchten Schlüssels.

+1

ja das würde funktionieren .. scheint nur wie viel Arbeit, um Werte eines Hash zu erhalten, anstatt nur über sie in der Ansicht zu iterieren – samccone

Verwandte Themen