0

我正在使用 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);

它失败。

任何帮助表示赞赏。

非常感谢,

肖恩

4

1 回答 1

0

如果您直接使用jsonResult服务调用,我假设您是,那么您需要viewModel = ko.mapping.fromJSON(jsonResult);检查每个场景设置的小提琴。

于 2013-10-26T05:44:16.070 回答