是否有某种方式,我可以传递一个辅助函数的返回值到另一个作为Handlebars参数



我遇到了一个使用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

最新更新