Я только что начал пробовать knockout.js. Ko.mapping предлагает отличный способ получить и отобразить данные с сервера. Однако я не могу заставить отображение работать.knockoutjs - ko.mapping.fromJS не работает
У меня есть простая модель:
//var helloWorldModel;
var helloWorldModel = {
name: ko.observable('Default Name'),
message: ko.observable('Hello World Default')
};
$(document).ready(function() {
ko.applyBindings(helloWorldModel);
//a button on the form when clicked calls a server class
//to get json output
$('#CallServerButton').click(getDataFromServer);
});
function getDataFromServer() {
$.getJSON("HelloSpring/SayJsonHello/chicken.json", function(data) {
mapServerData(data);
});
}
function mapServerData(serverData) {
helloWorldModel = ko.mapping.fromJS(serverData, helloWorldModel);
alert(JSON.stringify(serverData));
}
helloWorldModel имеет только два атрибута - одно и то же я вернуться с сервера. Оповещение в mapServerData показывает -
{"name":"chicken","message":"JSON hello world"}
Я посмотрел другие сообщения о подобной проблеме, но ни один из них не казалось, решить эту проблему. Может быть, мне не хватает чего-то очень простого - интересно, может ли кто-нибудь указать это.
Также обратите внимание, если я не объявить модель заранее и использовать
helloWorldModel = ko.mapping.fromJS(serverData);
это отображение данных в моей форме правильно.
Вы также можете сделать эту работу с письменной формой: 'функции mapServerData (ServerData) { ko.mapping.fromJS (serverData, {},/* пустой объект для параметров сопоставления * /, helloWorldModel); alert (JSON.stringify (serverData)); } 'см. Здесь, почему это также будет работать: http: //stackoverflow.com/questions/13322804/unable-to-parse-bindings-js-error-using-ko-mapping-fromjson-with-parse-exist-vie/13324185 # 13324185 – nemesv