リストビューの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ループを実装する方法がわかりません。
前もって感謝します!
これは、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>
テンプレート内に任意の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>
これは、クライアントテンプレート内のコレクションをループするもう1つのエレガントな方法です。
<script type="text/x-kendo-tmpl" id="template">
<div class="subscriberFunction">
<h3>${Title}</h3>
# var t=KeyPairs.join('<br>'); #
#=t #
</div>
</script>
構文がわかれば、コレクションをループすることができます。これは基本的に、より明確な構文でのスタンの答えです。リストを使用している場合は、プロパティを追加するだけでプロパティにアクセスできます(例:<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>