【发布时间】:2014-09-26 21:19:29
【问题描述】:
我正在创建一个车把助手,它采用以下形式:
define(['Handlebars'], function (Handlebars) {
Handlebars.registerHelper("myHelper", function (options) {
console.log('myHelper');
if (*condition*) {
console.log('myHelper False');
return options.inverse(this);
} else {
console.log('myHelper True');
return options.fn(this);
}
});
});
如您所见,我正在使用 require.js。我还将它用作 Backbone.js 应用程序的一部分。在模板中,helper 是这样调用的:
{{#myHelper}}
<!-- Some HTML -->
{{else}}
<!-- Some HTML -->
{{/myHelper}}
但是,助手总是返回 false,因为它无法识别。我知道这一点是因为 console.log 从未被调用过。我在应用程序中有其他自定义助手可以工作,但它们都接受参数。如果我添加一个虚拟参数,帮助器工作正常:
define(['Handlebars'], function (Handlebars) {
Handlebars.registerHelper("myHelper", function (dummy, options) {
console.log('myHelper');
if (*condition*) {
console.log('myHelper False');
return options.inverse(this);
} else {
console.log('myHelper True');
return options.fn(this);
}
});
});
模板:
{{#myHelper "string"}}
<!-- Some HTML -->
{{else}}
<!-- Some HTML -->
{{/myHelper}}
我正在使用车把 v1.0.0。这是 2.0.0 中解决的问题吗?这不是障碍,但如果可能的话,我显然不希望使用虚拟参数。
【问题讨论】:
标签: javascript backbone.js requirejs handlebars.js