gpt4 book ai didi

javascript - HandlebarsJS 中断循环

转载 作者:行者123 更新时间:2023-12-02 16:12:01 24 4
gpt4 key购买 nike

我正在使用 handelBarsJS 将 JSON 转换为 XML 。

我正在处理这个示例:我有一个“输出”列表:

"output":[
{
"name":"Name1",
"URI":"Link1",
"Ref":"ref1"
}, {
"name":"Name2",
"URI":"Link2",
"Ref":"ref2"
}, {
"name":"Name3",
"URI":"Link3"
}, {
"name":"Name4",
"URI":"Link4"
}
],

我有这个 XML 模板

<!-- output -->
{{#output}} {{^Ref}}
<outputs>
<OutputList>
{{/Ref}} {{/output}}
{{#output}}{{^Ref}}
<output name="{{name}}" xlink:href="{{URI}}" />
{{/Ref}} {{/output}}
{{#output}} {{^Ref}}
</OutputList>
</outputs>
{{{/Ref}} {{/output}}

我想要做的是仅检索不具有属性“Ref”的输出元素,我想要的输出 XML 格式的示例:

<!-- output -->
<outputs>
<OutputList>
<output name="Name3" xlink:href="Link3" />
<output name="Name4" xlink:href="Link4" />
</OutputList>
</outputs>

如果只有带有属性 Ref 的输出元素,我需要在 XML 文件中显示任何内容,因为我需要根据 XSD 架构对其进行验证。

当 Handelbars 对每个输出元素进行迭代并发现有一个具有 ref 属性的输出元素时,我需要添加此属性一次,就像在之后中断/退出循环一样:

<outputs><OutputList> 
</OutputList> </outputs>

最佳答案

您的模板看起来相当复杂,您只需要一个 each 循环和 unless 帮助程序。

模板:

<script id="template" type="text/x-handlebars-template">
<outputs>
<OutputList>
{{#each output}}
{{#unless Ref}}
<output name="{{name}}" xlink:href="{{URI}}" />
{{/unless}}
{{/each}}
</OutputList>
</outputs>
</script>

JavaScript:

var json = {
"output":[
{
"name":"Name1",
"URI":"Link1",
"Ref":"ref1"
}, {
"name":"Name2",
"URI":"Link2",
"Ref":"ref2"
}, {
"name":"Name3",
"URI":"Link3"
}, {
"name":"Name4",
"URI":"Link4"
}
]
};

var source = $("#template").html();
var template = Handlebars.compile(source);
var xml = template(json);

输出(var xml):

<outputs>
<OutputList>
<output name="Name3" xlink:href="Link3" />
<output name="Name4" xlink:href="Link4" />
</OutputList>
</outputs>

fiddle (参见控制台):http://jsfiddle.net/zba1g0dv/5/

关于javascript - HandlebarsJS 中断循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30078846/

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