我试图找出如何创建一个Kendo模板,该模板将循环通过AJAX请求返回的JSON数组。以下是数据对象的外观:
[{"Id":5, "CreatedBy":"testuser1"},
{"Id":6,"Archived":false,"CreatedBy":"testuser2"},
{"Id":7,"Archived":false,"CreatedBy":"testuser3"}]
我想在Kendo template中列出这样的CreatedBy字段:
用户列表:
testuser1
testuser2
testuser3
这是我的尝试,但它无效:
<ul>
# for (var i = 0; i < data.length; i++) { #
<li>#= data[i].CreatedBy #</li>
# } #
</ul>
我只是得到一个undefined,undefined,undefined的列表...... 当我删除CreatedBy并且只做数据[i]时,我会列出每个字段的每个字母。如何从数据对象中访问实际的CreatedBy值?
答案 0 :(得分: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(数据)行。
答案 1 :(得分:0)
如上所述,问题是由于AJAX请求的dataType。
默认情况下,返回数据类型是字符串,无法通过Kendo Template解析。
在请求中明确指定dataType: "json"
之后,或者像OP自己的回答一样,将返回数据解析为JSON类型,可以通过Kendo Template理解它并再次正常运行。