有没有办法可以将一个辅助函数的返回值作为Handlebars中的参数传递给另一个辅助函数

时间:2015-07-20 15:16:44

标签: javascript html handlebars.js

我使用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种形式各种语言)都不实用。

无论如何要做这项工作还是我需要使用完全不同的方法?

1 个答案:

答案 0 :(得分:0)

您不能使用嵌套的帮助器。如果需要包含新助手,请使用construct

{{#textformat 10 'right'}}
  {{getArrayValue address 0}}
{{/textformat}}

您可以在此处找到有关构建块帮助程序的更多信息:http://handlebarsjs.com/block_helpers.html