我遇到了一个使用Handlebars.js的当前项目的问题。我正在编写一个复杂的模板,必须仅作为文本输出(它直接作为字符串馈送到文本打印机),该文本可以是最多40个字符宽。
我遇到的问题是,我需要使用各种辅助函数来获取和组织我的数据,但是我需要将该文本放在另一个函数中,将其格式化为40字符宽度。
所以…我的辅助函数看起来有点像这样:
Handlebars.registerHelper('getLit' , function (litName) {
// some logic to retrieve a string lit in correct language
});
Handlebars.registerHelper('getArrayValue', function(array, key) {
return array[key];
});
Handlebars.registerHelper('textFormat', function(string, max_width, align) {
// logic to format the text
});
现在如果我的htm看起来像这样:
{{textFormat "This is a really long string that needs formating into the correcct length blah blah blah blah" 40 'left'}}
我没有问题。
然而,我需要能够使用辅助函数来构建字符串,例如
{{textFormat {{getArrayValue address 0}} 40 'right'}}
我希望我的解释不是太复杂,显然我正在处理的数据是非常大的,非常复杂的,所以简单地准备所有的数据馈入模板(例如,而不是使用getLit使每个字符串的6种形式在他们的各种语言)是不实际的。
是否有办法使这个工作,或者我需要使用一个完全不同的方法?
不能使用嵌套的帮助程序。如果需要包含新的帮助器,请使用construct
{{#textformat 10 'right'}}
{{getArrayValue address 0}}
{{/textformat}}
您可以在这里找到更多关于构建块帮助器的信息:http://handlebarsjs.com/block_helpers.html