2011-05-13 105 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