我想通过helper将json文件解析为partial。我目前正在使用本网站的技术:
Parsing Json data into partial
它工作得很好,但我想解析整个json文件:
{{#parseJSON jsonfile}}
而不是这样做:
{{#parseJSON '{"id": "firstname", "label": "First name"}'}}
#each helper通过传递Json文件
来工作{{#each jsonfile}}
{{> partial}}
{{/each}}
是否可以使用自定义帮助程序执行此操作?
答案 0 :(得分:0)
您可以使用自定义帮助程序执行此操作。您可以创建一个像{{#each}}
帮助器一样工作的块帮助器,也可以创建一个内联帮助程序,它将返回json对象进行迭代并将其用作子表达式。
<强> data.json 强>
{
"brian": { "id": "brian", "label": "Brian" },
"cataylyst": { "id": "cataylyst": "label": "The Cataylyst" }
}
阻止帮助
var path = require('path');
var fs = require('fs');
var each = Handlebars.helpers.each;
Handlebars.register('eachJSON', function(filepath, options) {
try {
var data = JSON.parse(fs.readFileSync(path.resolve(filepath), 'utf8'));
return each.call(this, data, options);
} catch (err) {
console.error(err);
return ''
}
});
内联帮助
var path = require('path');
var fs = require('fs');
Handlebars.register('readJSON', function(filepath, options) {
try {
return JSON.parse(fs.readFileSync(path.resolve(filepath), 'utf8'));
} catch (err) {
console.error(err);
return ''
}
});
<强>使用强>
{{!using the block helper}}
{{#eachJSON "data.json"}}
{{> partial this}}
{{/each}}
{{!using the inline helper with the built in each block}}
{{#each (readJSON "data.json")}}
{{> partial this}}
{{/each}}
我更喜欢第二种方法,因为它让您可以选择在其他地方使用readJSON
助手。此外,使用内置的each
帮助程序可确保您获得与将each
帮助程序与已在上下文中使用的对象或数组相同的功能。
希望这位助手。