web-dev-qa-db-ja.com

ListViewのテンプレート内のJsonのコレクションを介したKendoUIループ

リストビューのKendoUIテンプレート内で、各オブジェクト内のコレクションをループしてページに情報をレンダリングする方法を理解しようとしています。これが私が遊んでいるjsonの例です:

{"Data":[{"Title":"Malicious Acts","KeyPairs":{"Key1":"12","Key2":"24"}},            {"Title":"Enrollments","KeyPairs":{"Key1":"12","Key2":"24"}},{"Title":"Customer Feedback","KeyPairs":{"Key1":"12","Key2":"24"}},{"Title":"Questionable Accounts","KeyPairs":{"Key1":"12","Key2":"24"}}],"Total":4,"AggregateResults":null,"Errors":null}

テンプレートでKeyPairsアイテムをレンダリングしたいのですが、その方法を理解するのに少し問題があります。

ソースは次のとおりです。

<div id="subscriberFunctions">

    <script type="text/x-kendo-tmpl" id="template">
        <div class="subscriberFunction">
            <h3>${Title}</h3>
           <!-- Display KeyPairs -->
        </div>
    </script>

    @(Html.Kendo().ListView<SubscriberMenuFunction>()
        .Name("listView")
        .TagName("div")
        .ClientTemplateId("template")
        .DataSource(dataSource =>
        {
            dataSource.Read(read => read.Action("SubscriberMenu", "ListView"));
        })
        .Selectable(selectable => selectable.Mode(ListViewSelectionMode.Single))

    )
</div>

私はこれを考えすぎていると確信しています。これは単純なことですが、KendoUIが認識できるようにテンプレートにforeachループを実装する方法がわかりません。

前もって感謝します!

13
mservais

これは、forループのカウンターを使用して実行できます。これで問題が解決するはずです。

<script type="text/x-kendo-tmpl" id="template">
    <div class="subscriberFunction">
        <h3>${Title}</h3>
        <!-- Display KeyPairs -->
        <ul>
            #for (var i=0,len=KeyPairs.length; i<len; i++){#
                <li>${ KeyPairs[i] }</li>
            # } #
        </ul>
    </div>
</script>
26
Stan

テンプレート内に任意のJavaScriptコードを含めることができます。

<script type="text/x-kendo-tmpl" id="template">
    <div class="subscriberFunction">
        <h3>${Title}</h3>
       <!-- Display KeyPairs -->
         <ul>
         # for (var key in KeyPairs) { #
              <li>${ KeyPairs[key] }</li>
         # } #
         </ul>
    </div>
</script>
8
Atanas Korchev

これは、クライアントテンプレート内のコレクションをループするもう1つのエレガントな方法です。

<script type="text/x-kendo-tmpl" id="template">
    <div class="subscriberFunction">
        <h3>${Title}</h3>
          # var t=KeyPairs.join('<br>'); # 
          #=t #
    </div>
</script>
0
U.Y.

構文がわかれば、コレクションをループすることができます。これは基本的に、より明確な構文でのスタンの答えです。リストを使用している場合は、プロパティを追加するだけでプロパティにアクセスできます(例:<li>#=KeyPairs[i].FooBar#</li>

<script type="text/x-kendo-tmpl" id="template">
    <div class="subscriberFunction">
    <h3>#=Title#</h3>
    <ul>
        # for (var i = 0; i < KeyPairs.length; i++) { #
            <li>#=KeyPairs[i]#</li>
        # } #
    </ul>
</div>
0
Red