我正在使用 RESTful WebAPI 服务返回带有超媒体链接的 JSON,然后尝试使用 KnockoutJS 映射解码到视图模型中,尽管不明白为什么,但它一直失败。我不得不手动解析字符串化的 JSON,这意味着我的客户端现在已成为特定于对象的对象,从而消除了我所追求的解决方案的灵活性。
下面的简化示例返回了单个餐厅的详细信息,其中包含几个操作来预订或发送电子邮件。
这是JSON
{
"Id": 1,
"Name": "Kings Head",
"NickName": "Kings",
"_links": {
"book": {
"href": "/resturant/1/book",
"title": "Book"
},
"email": {
"href": "/resturant/1/email",
"title": "Email"
},
"self": {
"href": "/resturant/1"
}
}
}
有效的代码是:
var viewModel = {
Name: ko.observable(),
NickName: ko.observable()
};
$.getJSON('http://localhost:8080/resturants/1', function (jsonResult) {
var str = JSON.stringify(jsonResult);
var parsed = JSON.parse(str);
viewModel.Name = (parsed.Name);
viewModel.NickName = (parsed.NickName);
ko.applyBindings(viewModel);
})
如果我尝试使用:
viewModel = ko.mapping.fromJS(jsonResult);
它失败。
任何帮助表示赞赏。
非常感谢,
肖恩