每个循环动态 属性 查找车把
Dynamic property lookup handlebars each loop
我可以从我的数据中得到我想要循环的 属性 吗?
{{#each (lookup . 'reference')}}
<li>{{this.text}}</li>
{{/each}}
似乎不起作用,只是想知道过去是否有人这样做过?
找不到现有的方法,所以我创建了一个自定义的每个助手来完成这项工作。为避免混淆,我使用的是预编译的 grunt handlebars 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;
}
我可以从我的数据中得到我想要循环的 属性 吗?
{{#each (lookup . 'reference')}}
<li>{{this.text}}</li>
{{/each}}
似乎不起作用,只是想知道过去是否有人这样做过?
找不到现有的方法,所以我创建了一个自定义的每个助手来完成这项工作。为避免混淆,我使用的是预编译的 grunt handlebars 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;
}