内联嵌套jQuery模板 - {{tmpl}}

时间:2011-05-13 16:14:27

标签: jquery jquery-templates

为了使用jQuery templates呈现<ul>列表,我想使用{{tmpl}}子模板标记,传递一个名称数组来构建我的<li> } S:

$.tmpl('<div>Hello <ul>{{tmpl(persons) "<li>${name}</li>"}}</ul></div>', {persons: [
    {name: 'Tom'},
    {name: 'Fred'}
]}).appendTo('body');

问题是http://jsfiddle.net/abernier/87dRV/不起作用:/

我真的不明白为什么,因为文档说

  

模板HTML标记或要用作模板的文本

任何帮助表示赞赏:)

-

显然我可以:

$.tmpl('<div>Hello <ul>{{each(i, name) persons}}<li>${name}</li>{{/each}}</ul></div>', {persons: [
    {name: 'Tom'},
    {name: 'Fred'}
]}).appendTo('body');

但我更喜欢在这里使用{{tmpl}}

1 个答案:

答案 0 :(得分:0)

我没有进行调试,直到看到你的案例出错的原因,但作为替代方案如何:

$.template("person", "<li>${name}</li>");
$.tmpl('<div>Hello <ul>{{tmpl(persons) "person" }}</ul></div>', {persons: [
    {name: 'Tom'},
    {name: 'Fred'}
]}).appendTo('body');

使用内联模板的替代方法:

$.tmpl('<div>Hello <ul>{{tmpl(persons) "<li>$' + '{name}</li>"}}</ul></div>', {persons: [
    {name: 'Tom'},
    {name: 'Fred'}
]}).appendTo('body');

jQuery模板插件在看到自己的分隔符时会感到困惑。只需要将其分解为多个字符串。