【问题标题】:Looping through JSON objects in a Kendo JavaScript Template在 Kendo JavaScript 模板中循环遍历 JSON 对象
【发布时间】:2016-02-23 02:02:52
【问题描述】:

我试图弄清楚如何创建一个 Kendo 模板,该模板将遍历 AJAX 请求返回的 JSON 数组。下面是数据对象的样子:

[{"Id":5, "CreatedBy":"testuser1"},
{"Id":6,"Archived":false,"CreatedBy":"testuser2"},
{"Id":7,"Archived":false,"CreatedBy":"testuser3"}]

我想在 Kendo template 中仅列出 CreatedBy 字段:

用户列表:
测试用户1
测试用户2
测试用户3

这是我的尝试,但它不起作用:

<ul>
     # for (var i = 0; i < data.length; i++) { #
          <li>#= data[i].CreatedBy #</li>
     # } #
</ul>

我只是得到一个未定义、未定义、未定义的列表... 当我删除 CreatedBy 并执行 data[i] 时,我会列出每个字段的每个字母。如何从数据对象访问实际的 CreatedBy 值?

【问题讨论】:

  • 您的对象是数组还是{data: [{}, {}, {}]}?
  • 当我在警报中将它输出到浏览器时,我从 AJAX 请求返回的对象看起来与我在帖子顶部显示它的方式完全相同。请查看我刚刚发布的答案,我想我想通了,因为它正在工作。将 json 解析为 JavaScript 数组有助于我更轻松地循环遍历它。
  • 很高兴您解决了自己的问题 :) 您是否将 AJAX 的 dataType 设置为 JSON?在我看来,您的数据返回是一个字符串,而不是 JSON。如果是这样的话,可以设置请求的dataType,这样就不需要显式解析JSON了
  • 是的,这是一个疯狂的猜测,基于:1. OP data[i].CreatedBy Undefined 2. OP data[i] 将显示每个字符(如字符串) 3. 在 $.parseJSON 之后,它作品
  • 你完全正确我能够做到以下几点:docs.telerik.com/kendo-ui/api/javascript/ui/…。我更新了我的帖子。

标签: javascript jquery json kendo-ui kendo-ui-window


【解决方案1】:

我能够通过首先解析它来完成我想要的。如果其他人有更好的清洁方式,请告诉我。

<script id="myKendoTemplate" type="text/x-kendo-template">
    <ul style="list-style: none; padding: 0;">
        # var objList = $.parseJSON(data); #
        # for (var i = 0; i < objList.length; i++) { #
            <li>#= objList[i].CreatedBy #</li>
       # } #
    </ul>
</script>

如果有人感兴趣,另一个更新是我在kendo window documentation 中找到的。如果您将 dataType 设置为 json,则 jQuery 会为您解析数据,并且您不需要 $.parseJSON(data) 行。

【讨论】:

    【解决方案2】:

    如前所述,问题出在 AJAX 请求的数据类型上。

    默认返回数据类型为字符串,剑道模板无法解析。

    在请求中明确指定dataType: "json"后,或者像OP自己的答案将返回数据解析为JSON类型后,可以被Kendo Template理解并再次正常运行。

    【讨论】:

      猜你喜欢
      • 2016-11-18
      • 2015-09-16
      • 2012-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-07
      • 1970-01-01
      相关资源
      最近更新 更多