2013-12-10 67 views
0

有没有一种方法来检索存储在一个子对象的模板(AKA存储阵列中的关父对象的子对象),用于循环做时和应用该子对象上的模板?JsRender深嵌套数据模板

我知道这个问题有点混乱。以下是一些使事情更清晰的代码。

下面的构造函数代表我的模型:

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模板,这样我就可以递归数据打交道时方便地访问它。在这里,我newing了四个“项目”对象儿童“群组”对象:

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循环。

是否有任何方法获取孩子的模板并将其应用于父母的for循环?

回答

1

不错的做法。

您错过了{{include}}的结束斜线。否则它应该工作正常。

<div class="group">{{for children}}{{include tmpl=jsTmpl}/}}{{/for}}</div>

+0

@Matt登普西:你有看到这个吗?你能确认它现在适合你吗? – BorisMoore