2013-10-25 4 views
0

Я использую службу RESTful WebAPI для возврата JSON с гиперссылками Hypermedia, а затем попытался использовать сопоставление KnockoutJS для декодирования в модели представления, и он продолжает терпеть неудачу, хотя не понимаю почему. Мне нужно вручную разобрать стробированный JSON, что означает, что мой клиент теперь стал объектом, исключив гибкость с решением, которое я получил после.Использование сопоставления нокаутом с JSON, содержащим ссылки Hypermedia

В упрощенном примере ниже приводится информация об одном ресторане с несколькими действиями либо в книге, либо в электронной почте.

Вот 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); 

он терпит неудачу.

Любая помощь приветствуется.

Большое спасибо,

Shaun

+0

Какая ошибка дает вам, когда она терпит неудачу? Это должно появиться в консоли отладчика. Пробовали ли вы установить точку останова в обратном вызове и вручную проверить 'jsonResult', чтобы убедиться, что это правильные данные? – scaryman

ответ

0

Если вы используете jsonResult прямо из вызова службы, который я предполагаю, что вы, то вам нужно viewModel = ko.mapping.fromJSON(jsonResult); ЗАКАНЧИВАТЬ fiddle с каждой установки сценария.

+0

Большое спасибо, ответ был действительно 'codeviewModel = ko.mapping.fromJS (jsonResult)', а затем применить привязки. Цените помощь. –