我可以在每个对象属性上执行jquery-tmpl吗?

时间:2011-08-09 01:47:04

标签: javascript knockout.js jquery-templates

模板{{each}}指令非常适合迭代这样的数组:

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

我想知道是否存在迭代对象属性的等价物,即:

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

我想要一个让我输出为

的模板
<ul>
  <li><span>propOne</span><span>a</span></li>
  .... etc

对于奖励积分,我想使用KnockoutJS的这个模板。

2 个答案:

答案 0 :(得分:11)

实际上{{each}}将遍历对象的属性。你可以这样做:

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

以下是Knockout中的示例:http://jsfiddle.net/rniemeyer/rpMsM/

如果你真的想使用模板绑定的foreach选项,那么唯一真正的选择是将对象映射到具有键/值属性的对象数组。这样的事情:http://jsfiddle.net/rniemeyer/rpMsM/1/

答案 1 :(得分:7)

您也可以使用此

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