[英]Custom Handlebars helper is not resolved without parameters
我正在創建一個車把助手,其格式如下:
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應用程序的一部分。 在模板中,幫助程序的調用方式如下:
{{#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中解決的問題嗎? 這不是阻止程序,但我顯然希望盡可能不要使用虛擬參數。
這是您需要的幫手擺弄的東西。 使用handlebars-1.0.rc.1。 還嘗試過車把1.3.0-工作正常。
HTML
<script id="topLevel" type="text/x-handlebars-template">
{{#myHelper}}
it's truthy
{{else}}
it's falsy
{{/myHelper}}
</script>
JS
Handlebars.registerHelper('myHelper', function (options) {
if (true) {
console.log("It's true");
return options.fn(this);
}
console.log("It's false");
return options.inverse(this);
});
var _template = Handlebars.compile($('#topLevel').html());
$('body').append(_template());
因此,您的問題可能會發生:
庫已過時,或者您在注冊助手之前正在嘗試使用它。 Require.js異步加載庫/文件,將句柄稱為依賴項。 例:
define(function(require){
var yourObj = function() {
require(['handlebars'], function (Handlebars) {
// use Handlebars here
});
};
return yourObj;
});
希望對您有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.