我剛開始嘗試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只有2個屬性 - 這正是我從服務器返回同樣的事情。 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