2012-04-02 14 views
5

Biorąc pod uwagę ten hashJak iteracyjne nad hash w mustache.js

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

chcę iteracyjne nad nim, ale ponieważ klucze są różne nie jestem pewien, jak w Mustache.js

wyjście będzie wyglądać następująco foo: (treść tutaj)

+0

Czy możesz to szczegółowo opisać? Czy chcesz powtórzyć elementy 'foo',' bar' i 'zap' lub same klucze? – ZeissS

+0

@ZeissS edytowane * – samccone

Odpowiedz

4

Jeśli znasz klucz zagnieżdżonego obiektu, który próbujesz odzyskać, można użyć funkcji.

zobacz: 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> 
​ 

To oczywiście zakłada dane jest tablicą obiektów (the a w poście będzie jednym kluczem większej tablicy, może?) Jeśli nie masz tablicy, nie widzę powodu, dla którego nie byłbyś w stanie dopasować tego do obiektu i zrobić funkcji pobierającej dla wha Tever właściwości każdego klucza, którego szukasz.

+1

tak by działało .. po prostu wydaje się dużo pracy, aby uzyskać wartości hash zamiast tylko iteracyjne nad nimi w widoku – samccone

Powiązane problemy