我使用RESTful WebAPI服務來返回帶有超媒體鏈接的JSON,然後嘗試使用KnockoutJS映射解碼到視圖模型中,並且它仍然失敗,但不明白爲什麼。我不得不手動解析字符串化的JSON,這意味着我的客戶端現在變成了對象特定的東西,從而消除了我之後的解決方案的靈活性。使用包含超媒體鏈接的JSON使用Knockout映射
下面的簡單示例返回單個餐廳的詳細信息,其中包含一些預訂或電子郵件的操作。
這裏是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);
失敗。
任何幫助表示讚賞。
非常感謝,
肖恩
它失敗時會給你什麼樣的錯誤?這應該顯示在調試器控制檯中。您是否嘗試過在回調中設置斷點並手動檢查'jsonResult'以確保它是正確的數據? – scaryman