我试图让HTML有条件地出现在竞争模板中,但没有成功。
正如您在这个JSFiddle中所看到的,结果并不像预期的那样-表是一行。
我的模板:
<table border="1">
<tr>
{{#list:num}}
<td>{{.}}</td>
{{#if num > 0 && num % 2 == 0}}
</tr><tr>
{{/if}}
{{/list}}
</tr>
</table>我的Javascript:
var ractive = new Ractive({
el: "#cont",
template: "#template",
data: {
list: [1, 2, 3, 4, 5, 6]
}
});发布于 2014-10-11 14:29:19
与生成HTML字符串的传统模板系统不同,Ractive模板的每个部分都必须是有效的,否则就不可能构建虚拟DOM。这意味着您不能在一个部分中包含</tr><tr>。(真的,解析器应该抛出一个错误-我有在GitHub上提出了一个问题。)
另一种方法是将项目分组,并遍历组:
var ractive = new Ractive({
el: "#cont",
template: "#template",
data: {
list: [1, 2, 3, 4, 5, 6]
},
computed: {
grouped: function () {
var list = this.get( 'list' ),
grouped = [],
group;
group = [];
grouped.push( group );
list.forEach( function ( item, i ) {
if ( i > 0 && i % 2 == 0 ) {
group = [];
grouped.push( group );
}
group.push( item );
});
return grouped;
}
}
});<script src="http://cdn.ractivejs.org/0.6.0/ractive.js"></script>
<script type="text/html" id="template" >
<table border="1">
{{#each grouped}}
<tr>
{{#each this}}
<td>{{.}}</td>
{{/each}}
</tr>
{{/each}}
</table>
</script>
<div id="cont"></div>
https://stackoverflow.com/questions/26313495
复制相似问题