gpt4 book ai didi

javascript - 缺少字段的 Handlebars 输出为空

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:24:20 25 4
gpt4 key购买 nike

我正在尝试使用 Handlebars 来格式化从 JSON 文件接收到的数据。我当前的结构与此类似:

        <table class="table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Mark</th>
<th>Subject</th>
<th>School</th>
<th>Birthday</th>
</tr>
</thead>
<tbody>
{{#each students}}
<tr>
<td>{{ this.name }}</td>
<td>{{ this.mark }}</td>
<td>{{ this.subject }}</td>
<td>{{ this.school }}</td>
<td>{{ this.birthday }}</td>
</tr>
{{/each}}
</tbody>
</table>

我的 JSON 文件结构不一致,有些学生元素只包含姓名(缺少所有其他字段),有些只包含姓名和学校。

如果我使用我当前的代码来模板化 JSON 文件,我将得到一个包含很多空白单元格的表格,我想将其写入“null”。

我在想也许我应该写一个 registerhelper 但如果是这样,我应该怎么做呢?

最佳答案

最新版本的 Handlebars.js support the following报告所有在诸如{{myName}}{{something.myName}}{{ myHelper someValue}},不需要花括号内的虚拟助手:

Handlebars.registerHelper('helperMissing', function(/* [args, ] options */) {
var options = arguments[arguments.length - 1];
return 'MISSING VALUE: ' + options.name;
});

(使用 2.0.0 测试)

虽然问题是针对 JavaScript 的,但对于后代来说,这里有一个解决方案 Handlebars.java :

final Handlebars handlebars = new Handlebars();

/*
* By default, Handlebars outputs an empty String for missing values,
* and throws an exception if a helper is missing. Here, make it never
* throw an exception, and show a warning in the result text.
*/
handlebars.registerHelperMissing(new Helper<Object>() {
@Override
public CharSequence apply(final Object context, final Options options)
throws IOException {
return "MISSING VALUE: " + options.helperName;
}
});

(测试最新版本,1.3.2)

对于Mustache.java也是一样的:

final DefaultMustacheFactory mf = new DefaultMustacheFactory();

mf.setObjectHandler(new ReflectionObjectHandler() {
@Override
public Wrapper find(final String name, final Object[] scopes) {
Wrapper wrapper = super.find(name, scopes);
if (wrapper instanceof MissingWrapper) {
return new Wrapper() {
@Override
public Object call(Object[] scopes) throws GuardException {
return "MISSING VALUE: " + name;
}
};
}
return wrapper;
}
});

(使用版本 0.8.2 测试,有点过时。未使用条件和循环进行测试。)

关于javascript - 缺少字段的 Handlebars 输出为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24812047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com