当执行 for循环<时,是否有办法检索存储在子对象中的模板( AKA,一个存储在父对象的数组中的子对象) / strong>并在子对象上应用该模板?
我知道这个问题有点令人困惑。下面是一些使事情更清晰的代码。
以下构造函数代表我的模型:
function group (children) {
this.children = children;
}
group.prototype.jsTmpl = $1_10_2.templates('<div class="group">{{for children tmpl=jsTmpl /}}</div>');
group.prototype.render = function(selector){
$1_10_2(selector).html(this.jsTmpl.render(this));
}
function item (title) {
this.title = title;
}
item.prototype.jsTmpl = $1_10_2.templates('<div class="item">{{:title}}</div>');
我将唯一的jsRender模板存储在每个对象的原型中,以便在处理递归数据时可以轻松访问它。在这里,我正在使用四个“项目”对象子项新建一个“组”对象:
var vehicles = new group([
new item('car'),
new item('truck'),
new item('van'),
new item('bus'),
]);
现在,当我在我的车辆组实例上调用 vehicles.render(); 时,我希望如下:
Output: <div class="group">
<div class="item">car</div>
<div class="item">truck</div>
<div class="item">van</div>
<div class="item">bus</div>
</div>
相反,我得到以下内容:
Output: <div class="group">
<div class="group"></div>
<div class="group"></div>
<div class="group"></div>
<div class="group"></div>
</div>
我得出的结论是组对象中的 tmpl = jsTmpl 始终引用组对象的jsTemp属性,而不是当前孩子在for循环中。
我尝试将以下内容用于jsRender组模板:
'<div class="group">{{for children}}{{include tmpl=jsTmpl}}{{/for}}</div>'
但是jsRender不喜欢在for循环中包含一个include。
有没有办法获取孩子的模板并将其应用于父母的for循环?
答案 0 :(得分:1)
很好的方法。
您错过了{{include}}上的结束斜线。否则它应该可以正常工作。
<div class="group">{{for children}}{{include tmpl=jsTmpl}/}}{{/for}}</div>