HandlebarsJS 中断循环
HandlebarsJS break loop
我正在使用 handelBarsJS 将 JSON 转换为 XML 。
我正在处理这个示例:我有一个列表 "Output":
"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}}
我想要做的是只检索输出的元素,dosent 具有属性 "Ref",我想要的输出 XML 格式示例:
<!-- output -->
<outputs>
<OutputList>
<output name="Name3" xlink:href="Link3" />
<output name="Name4" xlink:href="Link4" />
</OutputList>
</outputs>
如果只有带有属性 Ref 的输出元素,我不需要在 XML 文件中显示任何内容,因为我需要根据 XSD 模式验证它。
我需要在 Handelbars 迭代每个输出元素时发现有一个带有 ref 属性的输出元素,它添加了这个 Only Once 就像 breaking/exiting 之后的循环:
<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/
在将我的 XML 模板应用到我的 JSON 对象之前,我通过简单地删除具有 ref 属性的输出元素来解决这个问题。
这就是我的 XML 模板的样子:
<!-- output -->
{{#if output}}
<outputs>
<OutputList>
{{/if}}
{{#output}}
<output name="{{name}}" xlink:href="{{URI}}" />
{{/output}}
{{#if output}}
</OutputList>
</outputs>
{{/if}}
希望这对像我这样的新手有所帮助。
我正在使用 handelBarsJS 将 JSON 转换为 XML 。
我正在处理这个示例:我有一个列表 "Output":
"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}}
我想要做的是只检索输出的元素,dosent 具有属性 "Ref",我想要的输出 XML 格式示例:
<!-- output -->
<outputs>
<OutputList>
<output name="Name3" xlink:href="Link3" />
<output name="Name4" xlink:href="Link4" />
</OutputList>
</outputs>
如果只有带有属性 Ref 的输出元素,我不需要在 XML 文件中显示任何内容,因为我需要根据 XSD 模式验证它。
我需要在 Handelbars 迭代每个输出元素时发现有一个带有 ref 属性的输出元素,它添加了这个 Only Once 就像 breaking/exiting 之后的循环:
<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/
在将我的 XML 模板应用到我的 JSON 对象之前,我通过简单地删除具有 ref 属性的输出元素来解决这个问题。
这就是我的 XML 模板的样子:
<!-- output -->
{{#if output}}
<outputs>
<OutputList>
{{/if}}
{{#output}}
<output name="{{name}}" xlink:href="{{URI}}" />
{{/output}}
{{#if output}}
</OutputList>
</outputs>
{{/if}}
希望这对像我这样的新手有所帮助。