动态属性查找把手每个循环

时间:2016-02-11 12:46:00

标签: json handlebars.js

我可以将我想要循环的属性来自我的数据吗?

{{#each (lookup . 'reference')}}
    <li>{{this.text}}</li>
{{/each}}

似乎没有用,只是想知道其他人过去是否做过这个?

1 个答案:

答案 0 :(得分:0)

无法找到现有的方法,所以我创建了一个自定义每个帮助程序来完成这项工作。为了避免任何混淆,我使用了预编译的grunt把手https://github.com/patrickkettner/grunt-compile-handlebars但是脚本应该在使用addHandlebarHelper进行调用时略微修改。

要点 - https://gist.github.com/mikemellor11/9b23a0af217a3c67593c

module.exports = function (path, context, option) {
    var ret = "";

    if(!option){
        option = context;
        context = option.data.root;
    }

    context = getProperty(path, context);

    for(var i=0, j=context.length; i<j; i++) {
        option.data.index = i;
        option.data.first = i === 0;
        option.data.last = i === (j - 1);

        ret = ret + option.fn(context[i]);
    }

    return ret;
};


function getProperty( propertyName, object ) {
    var parts = propertyName.split( "." ),
        length = parts.length,
        i,
        property = object || this;

    for ( i = 0; i < length; i++ ) {
        property = property[parts[i]];
    }

    return property;
}