你必须先按摩你的模型在Javascript。只需将“Cards”的每个命名属性转换为数组条目即可。然后,新模式传递给模板,当你使它:
function extractDynamicCards(model) {
var cardModel = [];
for (var dn in model.Cards) {
cardModel.push(model.Cards[dn]);
}
return {Cards: cardModel};
}
编辑 这里是之前和示例脚本后
<script type="mustache/x-tmpl" id="pack_tmpl1">
<ul>
<li>{{Cards.DynamicName2.d}}</li>
<li>{{Cards.DynamicName3.d}}</li>
</ul>
</script>
<script type="mustache/x-tmpl" id="pack_tmpl2">
<ul>
{{#Cards}}
<li>{{d}}</li>
{{/Cards}}
</ul>
</script>
<h2>Result 1</h2>
<div id="result1"></div>
<h2>Result 2</h2>
<div id="result2"></div>
以下数据:
<script type="text/javascript">
var model = {
Cards: {
DynamicName2: { d: "data-2" },
DynamicName3: { d: "data-3" },
DynamicName4: { d: "data-4" },
DynamicName5: { d: "data-5" },
DynamicName6: { d: "data-6" },
}
}
function extractDynamicCards(model) {
var cardModel = [];
for (var dn in model.Cards) {
cardModel.push(model.Cards[dn]);
}
return {Cards: cardModel};
}
var source1 = $("#pack_tmpl1").html();
var template1 = Hogan.compile(source1);
$('#result1').html(template1.render(model));
var source2 = $("#pack_tmpl2").html();
var template2 = Hogan.compile(source2);
$('#result2').html(template2.render(extractDynamicCards(model)));
</script>
你可以看到这一切工作与此JSFiddle
所以你的意思是只有一个空的卡片阵列看起来像:'cards {[],[],[],[]}' – Edward
下面是我正在谈论的一个例子:http://jsfiddle.net/Kv3m8/。结果是一个对象数组,如下所示:'model = {Cards:[{},{},{}]}' – Keith