将模板中写入的数组传递给meteor/handlebars helper

Ril*_*ark 22 handlebars.js meteor

我有一个叫做的帮助器printArray,只打印一个数组中的每个项目.当我在JS中定义数组并通过上下文对象将其传递给帮助程序时,它工作得很好.我想要做的是在模板中定义数组,如:

{{printArray arr=[1, 3, 4] }}
Run Code Online (Sandbox Code Playgroud)

不幸的是,到了我的帮手时,arr关键点指向undefined.是否有任何有效的语法来在我的帮助器中获取数组而不在javascript中定义它?

Aar*_*ieb 8

你可以使用JavaScript的arguments数组来完成这样的事情.该arguments数组使您可以访问调用时传递给函数的每个值.

这将允许您使用如下语法:

{{printArray 1 3 4}}
Run Code Online (Sandbox Code Playgroud)

代码如下所示:

Handlebars.registerHelper('printArray', function() {
    //Last argument is the options object.
    var options = arguments[arguments.length - 1];

    //Skip the last argument.
    for(var i = 0; i < arguments.length - 1; ++i) {
        //Do your thing with each array element.
    }

    //Return your results...
    return '';
});
Run Code Online (Sandbox Code Playgroud)


Sye*_*ain 2

您需要使用另一个返回数组的助手

Template.ArrayDemo.helpers({
    arrayValues: [1, 2, 3],
    printArray: function(arr) {
        for (i = 0; i < arr.length; i++) {
            console.log(arr[i]);
        }
    }
 });
Run Code Online (Sandbox Code Playgroud)

现在你可以做

{{printArray arr=arrayValues}}