1

我在 JS 中有一个变量,例如它可能是 currentPage。

现在我想做这样的事情:

{{> currentPage}}

这当然行不通!

我实际上想像这样编写一个 Handlebars 助手:

Handlebars.registerHelper('currentPage', function(context, options) {
   var currentPage = ...;
   return Handlebars._defaultHelpers(">",currentPage);
}

但不幸的是,“>”没有在 Handlebars 中注册为辅助函数,我不知道如何访问此代码。

我也可以想象使用这样的东西:

Handlebars.registerHelper('currentPage', function(context, options) {
    var currentPage = ...;
    document.body.appendChild(Meteor.render(Template[currentPage]));
    return "";
});

哪种有效,但会破坏更新系统。

如果我返回 HTML 字符串,则模板不再更新。

我认为这很常见,但我不知道如何解决。

4

1 回答 1

3

做没有>标记。这是renderPageRouter或yieldIron Router中定义的方法助手。

html:

{{currentPage}}

js:

Handlebars.registerHelper('currentPage', function(...) {
    var currentTemplate = ...;
    var templateData = ...;
    return new Handlebars.SafeString(Template[currentTemplate](templateData));
});

templateData如果不需要,可以省略该部分。

于 2013-09-19T18:07:05.927 回答