我正在努力将JSON字符串转换为可观察数组,以便在HTML中的foreach循环中使用。当我遍历它时,我在可观察数组中得到一个额外的未定义属性。任何帮助都会受到很大的影响。这是我的代码:
var regions = '{"1":{"id":1,"name":"Scotland"},"3":{"id":3,"name":"North West"},"7":{"id":7,"name":"South East"},"5":{"id":5,"name":"East Anglia"},"9":{"id":9,"name":"Wales"},"8":{"id":8,"name":"South West"},"6":{"id":6,"name":"Greater London"},"2":{"id":2,"name":"North East"},"4":{"id":4,"name":"Midlands"}}';
this.regions = ko.observableArray();
ko.mapping.fromJSON(regions, {}, this.regions());
ko.utils.arrayForEach(this.regions(), function(region){
console.log(region);
});
当我运行我的forloop时 - 当JSON字符串中只有9个对象时,我得到10个控制台日志,第一个日志是未定义的,接下来的9个是正确的。
undefined
store-locator.html:174 Object {id: function, name: function}
store-locator.html:174 Object {id: function, name: function}
store-locator.html:174 Object {id: function, name: function}
store-locator.html:174 Object {id: function, name: function}
store-locator.html:174 Object {id: function, name: function}
store-locator.html:174 Object {id: function, name: function}
store-locator.html:174 Object {id: function, name: function}
store-locator.html:174 Object {id: function, name: function}
store-locator.html:174 Object {id: function, name: function}
我可以使用以下代码在html中循环遍历数组,但是我再次在列表的开头找到一个空列表项,然后是9个区域名称。
<ul data-bind="foreach: $root.regions()">
<li data-bind="text: name"></li>
</ul>
P.S我非常确定JSON是有效的,它是一个使用json_encode()转换的php数组
答案 0 :(得分:0)
最后更改了后端以提供没有键的数组,因此淘汰赛能够正确解释数据。
非常感谢。 灰