假设我已经定义了以下模板和帮助器:
var template = Template.fromString('{{#each people}}{{name}} {{/each}}');
var helpers = {
people: function() {
return [
{name: 'Tim'},
{name: 'Mary'},
{name: 'John'}
];
},
fun: function(s) {
return '[' + s + ']';
}
};
(我正在使用numtel:template-from-string
从字符串生成模板。)
以下代码有效:
Blaze.toHTMLWithData(template, helpers); // returns "Tim Mary John "
而且,这也有效:
template = Template.fromString('{{fun "Test"}}');
Blaze.toHTMLWithData(template, helpers); // returns "[Test]"
但是,这不能按预期工作。我希望它返回"[Tim] [Mary] [John] "
,但它会产生错误:
var template = Template.fromString('{{#each people}}{{fun name}} {{/each}}');
Blaze.toHTMLWithData(template, helpers);
我明白了:
Uncaught Error: No such function: fun(…)
我基本上只需要将助手和数据传递到所有在这里获得evaluta的子范围和上下文。
我不需要让它与Blaze.toHTMLWithData
一起使用,我可以使用更长的解决方案来递归评估部分等。
我只需要让它发挥作用。有任何想法吗?