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}}   

希望这对像我这样的新手有所帮助。