【发布时间】:2014-03-22 09:08:52
【问题描述】:
我刚刚开始尝试 knockout.js。 ko.mapping 提供了一种从服务器获取和映射数据的好方法。但是我无法使映射工作。
我有一个简单的模型:
//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);
它正在正确地将数据映射到我的表单。
【问题讨论】:
-
您也可以通过写作来完成这项工作:
function mapServerData(serverData) { ko.mapping.fromJS(serverData, {}, /* empty object for the mapping options */, helloWorldModel); alert(JSON.stringify(serverData)); }在这里查看为什么这也可以工作:stackoverflow.com/questions/13322804/…
标签: javascript knockout.js knockout-mapping-plugin