2015-05-03 7 views
5

С шаблоном шаблона dot.js, как вы проходите через объект? В приведенных ниже примерах показано, как вы проходите через объект msg?dot.js loop through object

{ 
    "msg": { 
     "1": { 
      "a": "a1" 
     }, 
     "2": { 
      "b": "b2" 
     } 
    } 
} 

ответ

6

Из примера на the website, это выглядит так, как будто вы должны быть в состоянии сделать:

{{ for(var prop in it) { }} 
<div>{{=prop}}</div> <!-- Prints "msg" --> 
    {{ for(var msgProp in it[prop]) { }} 
    <div>{{=msgProp}}</div> <!-- Prints "1" and "2" --> 
     {{ for(var numProp in it[prop][msgProp]) { }} 
     <!-- Prints "a: a1" and "b: b1" --> 
     <div>{{=prop}}: {{=it[prop][msgProp][numProp]}}</div> 
     {{ } }} 
    {{ } }} 
{{ } }} 

Однако вы можете simplifiy этот объект немного с Javascript первым, прежде чем передать его шаблон, чтобы упростить итерацию.

+1

Я нашел его немного более читаемым (хотя я предполагаю, что он менее совместим со старыми браузерами) вместо этого использует Object.keys. Вырезает все вложенные скобки. Так что-то вроде '{{~ Object.keys (it): firstGroup}} ... {{~}}' –

0

Лучше всего сделать первый конвертировать msg в массив. Это намного проще повторить так. После этого просто используйте jQuery's $.each().