【发布时间】:2016-12-01 23:12:55
【问题描述】:
我是 knockout.js 的新手,我正在尝试绑定到以下代表用户的对象:
{
"$id": "1",
"$values": [
{
"$id": "2",
"Locations": {
"$id": "3",
"$values": []
},
"Photos": {
"$id": "4",
"$values": []
},
"UserId": 1,
"Name": "Test User"
}
]
}
用户可以有零个或多个位置,以及零个或多个照片。
视图模型:
function UsersViewModel() {
var self = this;
self.users = ko.observableArray();
var baseUri = 'http://localhost:46241/api/users';
$.getJSON(baseUri, function (data) {
self.users = data;
});
}
$(document).ready(function () {
ko.applyBindings(new UsersViewModel());
})
HTML 包含以下绑定:
<ul id="update-users" data-bind="foreach: users">
<li>
<div><div class="item">User ID</div>
<input type="text" data-bind="value: $data.UserId" />
</div>
<div><div class="item">Name</div>
<input type="text" data-bind="value: $data.Name" />
</div>
</li>
</ul>
我是不是完全做错了?或者用户对 Locations 和 Photos 的对象引用可能会破坏绑定?
【问题讨论】:
-
UserId 和 Name 位于对象的“$values”部分下 - 您没有将其包含在绑定中。 $values 以 $ 开头的事实可能会让您在淘汰赛中遇到麻烦。如果您可以控制对象的生成方式,那么值得去掉 $ 来稍微整理一下。
-
您的 self.users = 数据工作正常吗?我没有看到将 $values 数组写入您的可观察数组
标签: knockout.js