【发布时间】:2013-06-12 06:52:17
【问题描述】:
我有一个对象,我试图用 foreach 循环,但我失败了(这就是 6 个月不编码对我的影响......)
这很好用:
<div data-bind="text: $root[36].partition"></div>
但是 foreach 不适合我。
<div data-bind="foreach: $root">
<div data-bind="text: $data.partition"></div>
</div>
我在我的 html 中得到的只是:
<div data-bind="foreach: $root"></div>
我的 viewModel 正在从 php 脚本获取 JSON 数据,其结构如下: 09、10 和 36 是分区 ID。每个分区都有一个“分区”变量,它显示分区的名称。实际的 JSON 结构更深入,这里只是为了表示
top level
09
partition
vip
10
partition
vip
36
partition
vip
这是我的 JS。没什么特别的,我只是在玩玩
$(document).ready(function() {
var viewModel = {};
$.getJSON('/lbstat/read.php', function(data) {
viewModel = ko.mapping.fromJS(data);
ko.applyBindings(viewModel);
});
});
JSON:
{"23":{
"partition":"Prod New SVCs Partition",
"env_dc":"Prod",
"hosts":["server01.domain.com", "server02.domain.com"],
"vips":{
"124":{
"dc_endpoint":"ADX - Prod - Intranet",
"gw_port":"9007",
"vip_name":"adx-prd.domain.net"
},
"210":{
"dc_endpoint":"Msg - Prod - Internet",
"gw_port":"8013",
"vip_name":"messaging-prd.domain.com"
},
"211":{
"dc_endpoint":"Msg - Prod - Intranet",
"gw_port":"9013",
"vip_name":"messaging-prd.domain.net"}
},
}
}
此处提供完整的 JSON:http://pastebin.com/zpNngr53
我在这里做错了什么?
【问题讨论】:
-
您的问题并不完全清楚,代码不完整。如果我尝试完成它,对我来说一切都很好,例如见this fiddle。
-
加载你的 JSON 的代码是什么样的,你的代码是什么
ko.applyBindings? -
在原问题中添加了 JS 和 JSON
-
您确定JSON中的外部
[和]吗?这与您最初的声明不符,即$root[36].partition有效。 -
恐怕你的样本理解起来还是有点粗糙。 “23”是什么意思,它代表什么? “vips”位看起来像是要创建一个数组,但它是一个对象 (
{...}),具有属性“124”、“210”、“211”。此外,您认为foreach表明您有一个数组,但您的数据中唯一的数组是"hosts"?