14

我试图在列表视图的 Kendo UI 模板中找出如何循环遍历每个对象中的集合以在页面上呈现信息。这是我正在使用的 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>

我确定我只是想多了,这很简单,但不确定如何在模板中实现 foreach 循环以便 Kendo UI 识别它。

提前致谢!

4

4 回答 4

29

您可以使用 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>
于 2012-11-21T12:58:28.007 回答
8

您可以在模板中包含任意 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>
于 2012-09-04T05:56:01.423 回答
1

一旦您知道语法,就可以遍历集合。这基本上是斯坦斯用更清晰的语法回答。如果您使用的是列表,则只需添加它们即可访问属性,例如,<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>
于 2018-10-23T15:39:42.637 回答
0

这是在客户端模板中循环集合的另一种优雅方式

<script type="text/x-kendo-tmpl" id="template">
    <div class="subscriberFunction">
        <h3>${Title}</h3>
          # var t=KeyPairs.join('<br>'); # 
          #=t #
    </div>
</script>
于 2020-01-23T21:31:36.033 回答