我有这个ajax来获取数据
var homeSummaryViewModel;
$(document).ready(function () {
getHomeSummaryViewModel();
});
function getHomeSummaryViewModel() {
$.ajax({
url: "/api/homeservice/get",
type: "get",
contentType: "application/json",
success: function (result) {
homeSummaryViewModel = ko.mapping.fromJSON(result);
ko.applyBindings(homeSummaryViewModel, $("#homeSummary").get(0));
},
error: function (result) {
//handle the error, left for brevity
}
});
}
这是我的HTML
<div class="plan-name-bronze">
<h4>Home</h4>
<div class="icon">
<i class="fa fa-trophy fa-5x"></i>
</div>
</div>
<ul class=" text-left" id="homeSummary">
<li class="plan-feature">Completed Level : <span data-bind="text: Level"></span> </li>
<li class="plan-feature">Total Score : <span data-bind="text: Score"></span> </li>
</ul>
</div>
</div>
这是我的JSON
{"Level":"Noob","Score":788}
我在knockout-3.0.0.debug.js中遇到此错误,当id执行homeSummaryViewModel.peek()时,我得到null。我看到数据是从firebug中的服务器发送的,如上面显示的JSOn数据,ko.mapping不会抛出错误它只是不起作用可能???
ReferenceError:未定义级别返回新函数(“$ context”, “$ element”,functionBody);
答案 0 :(得分:2)
我必须使用
homeSummaryViewModel = ko.mapping.fromJS(result);
而不是
homeSummaryViewModel = ko.mapping.fromJSON(result);
答案 1 :(得分:0)
value
绑定仅适用于表单输入元素;你需要使用text
绑定。
答案 2 :(得分:0)
问题是你绑定了$ .get,我创建了一个简单的测试用例http://jsfiddle.net/PB9KL/,它运行正常。
var homeSummaryViewModel;
getHomeSummaryViewModel();
function getHomeSummaryViewModel() {
homeSummaryViewModel = ko.mapping.fromJSON('{"Level":"Noob","Score":788}');
ko.applyBindings(homeSummaryViewModel,document.getElementById("homeSummary"));
}