2012-04-02 5 views
5

bir karma üzerinde yineleme ama tuşlar farklı olduğundan ben nasıl Mustache.js emin değilimBu nasıl karma</p> i üzerinde yineleme istiyorum <pre><code>a = { foo : { ... }, bar : { ... }, zap : { ... } } </code></pre> <p>Verilen mustache.js

çıktı bu foo gibi olacaktır: (burada içerikler)

+0

Bunu biraz detaylandırabilir misiniz? Foo, 'bar' ve zap' öğelerinin veya anahtarların kendisini tekrarlamak ister misiniz? – ZeissS

+0

@ZeissS düzenlenmiş * – samccone

cevap

4

Eğer, bir işlev kullanabilirsiniz almak için çalışıyoruz iç içe nesnesindeki anahtar biliyorsanız.

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

Bu tabii ki veri (yazınıza a bir anahtar olacaktır nesnelerin bir dizidir varsayar daha büyük bir dizi, belki?) Bir diziniz yoksa, bunu neden bir nesne için ayarlayamayacağınızı ve wha için bir getter fonksiyonu yapamayacağınızı anlamıyorum. aradığınız her tuşun tever özellikleri.

+1

bu işe yarar .. sadece bir bakışta değerlerin sadece görünümde yinelemek yerine bir karma değeri elde etmek gibi görünüyor – samccone

İlgili konular