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

发布于 2024-11-07 06:17:18 字数 1106 浏览 0 评论 0原文

为了使用 jQuery 模板

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

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

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

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

任何帮助表示赞赏:)

--

显然我可以:

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

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

In order to render a <ul> list with jQuery templates, I'd like to use {{tmpl}} sub-template tag, passing it an array of names to build my <li>s:

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

The problem is this http://jsfiddle.net/abernier/87dRV/ does not work :/

I don't really understand why since the documentation says

template The HTML markup or text to use as a template.

Any help appreciated :)

--

Obviously I can:

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

But I'd have prefered using {{tmpl}} here.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

給妳壹絲溫柔 2024-11-14 06:17:18

我还没有调试到为什么你的情况会出错,但是作为替代方案怎么样:

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

当 jQuery 模板插件在其中看到自己的分隔符时,它会感到困惑。只需要把它分成多个字符串即可。

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

当 jQuery 模板插件在其中看到自己的分隔符时,它会感到困惑。只需要把它分成多个字符串即可。

I did not debug down yet to the point of seeing why your case is erroring out, but how about this as an alternative:

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

Alternative that uses an inline template:

$.tmpl('<div>Hello <ul>{{tmpl(persons) "<li>

The jQuery template plugin gets confused when it sees its own delimiters in it. Just need to break it up into multiple strings.

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

The jQuery template plugin gets confused when it sees its own delimiters in it. Just need to break it up into multiple strings.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文