为了使用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}}
。
答案 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模板插件在看到自己的分隔符时会感到困惑。只需要将其分解为多个字符串。