1

次の JSON があります。本質的には、オブジェクトの外側の配列 ( ) であり、それぞれにオブジェクトの内側の配列 ( )Outerが含まれる場合があります。Inner

{ "Outer": [{"OuterName": "OuterName1",
             "Inner": [{"InnerName": "InnerName1"}, 
                       {"InnerName": "InnerName2"}]
            },
            {"OuterName": "OuterName2",
             "Inner": [{"InnerName": "InnerName3"}, 
                       {"InnerName": "InnerName4"}]
            }]
}

順序付けられていないリストを作成する ICanHaz テンプレートがあります。Inner各配列内のオブジェクトごとにリスト項目が必要です。

<script type="text/html" id="tmp">
    <ul>
        {{#Outer}}
        {{#Inner}}
        <li>
            {{OuterName}} - {{InnerName}} 
        </li>
        {{/Inner}}
        {{/Outer}}
    </ul>
</script>

問題は、条件OuterName内から参照できないように見えることです。#Innerしたがって、出力は次のようになります。

 - InnerName1
 - InnerName2
 - InnerName3
 - InnerName4

私が期待しているとき:

OuterName1 - InnerName1
OuterName1 - InnerName2
OuterName2 - InnerName3
OuterName2 - InnerName4

これを解決する方法を知っている人はいますか?それとも、JSON を再構築して、Inner配列にも含まれるようにする必要がありOuterNameますか?

4

2 に答える 2

3

それは有効な口ひげです。問題は、ライブラリのバージョンにある可能性が最も高いです。

ICanHaz には、Mustache.js v0.4.0 が同梱されています。現在のバージョン (8 回のリリースと 16 か月後のバージョン) は 0.7.2 です。に切り替えてICanHaz-no-mustache.js、自分の口ひげを持ってきてください。それはそれを修正する必要があります。

これは、Mustache.js の最新バージョンで動作するテンプレートのフィドルです。

var tpl  = $('#tpl').html();

var data = { "Outer": [{"OuterName": "OuterName1",
             "Inner": [{"InnerName": "InnerName1"}, 
                       {"InnerName": "InnerName2"}]
            },
            {"OuterName": "OuterName2",
             "Inner": [{"InnerName": "InnerName3"}, 
                       {"InnerName": "InnerName4"}]
            }]
};

$('#output').html(Mustache.to_html(tpl, data));
于 2013-05-09T15:36:38.757 に答える
1

私はあなたのテンプレートに慣れていませんが、次のようなものはどうでしょうか:

<script type="text/html" id="tmp">
    <ul>
        {{#Outer}}
        <li>
            {{OuterName}} - {{#Inner}}{{InnerName}}{{/Inner}}
        </li>
        {{/Outer}}
    </ul>
</script>

これが機能しない場合は申し訳ありませんが、構文を解体しているだけの可能性が高いようです。:)

于 2013-05-08T17:46:31.247 に答える