Могу ли я сделать jquery-tmpl каждый над свойствами объекта - PullRequest
11 голосов
/ 09 августа 2011

Директива шаблона {{each}} отлично подходит для итерации по массиву, например так:

var myArray = ["a","b","c"];

Мне интересно, есть ли эквивалент для итерации по свойствам объекта, то есть ::1004*

var myObj = {"propOne": "a", "propTwo": "b", "propThree": "c"};

Я бы хотел шаблон, который позволил бы мне выводить как

<ul>
  <li><span>propOne</span><span>a</span></li>
  .... etc

Для получения бонусных баллов я хотел бы использовать этот шаблон от KnockoutJS.

Ответы [ 2 ]

11 голосов
/ 09 августа 2011

На самом деле {{each}} будет проходить через свойства объекта. Вы можете сделать что-то вроде этого:

{{each(prop, val) myObj}}
      <li><span>${prop}</span> - <span>${val}</span></li>
{{/each}}

Вот пример в нокауте: http://jsfiddle.net/rniemeyer/rpMsM/

Если вы действительно хотите использовать опцию foreach привязки шаблона, то единственная реальная опция - сопоставить объект с массивом объектов со свойствами ключ / значение. Как то так: http://jsfiddle.net/rniemeyer/rpMsM/1/

7 голосов
/ 04 мая 2012

Вы также можете использовать это

{{each myObj}}
      <li><span>${$index}</span> - <span>${$value}</span></li>
{{/each}}
...