2011-05-13 79 views
0

为了渲染<ul>清单,jQuery templates,我想使用{{tmpl}}子模板标签,通过它的名称数组建立我<li> S:内嵌嵌套的jQuery模板 - {{TMPL}}

$.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

为什么你的情况下,示数出来我没有调试下来尚未看到的点,但如何将此作为一种替代方案:

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

+0

当然,但 - 正如问题的标题所示 - 我想在此使用*内嵌*模板,而不是预编译的;) – abernier 2011-08-10 19:16:18

+0

OK-编辑答案和替代方案。 – 2011-08-10 19:52:52

+1

猜猜我的编辑昨天没有粘住。再次编辑。 – 2011-08-12 02:20:37