Jquery KnockoutJS通过映射插件绑定问题从远程源获取JSON
我有一个jQuery:Jquery KnockoutJS通过映射插件绑定问题从远程源获取JSON,jquery,knockout.js,jsonp,knockout-mapping-plugin,Jquery,Knockout.js,Jsonp,Knockout Mapping Plugin,我有一个jQuery: $.ajax({url : sUrl, dataType: "jsonp", type: "GET", contentType: "application/json;charset=utf-8", headers: { "accept": "application/json;charset=utf-8" }, error: function (a, b, c){ alert(a); alert(a.s
$.ajax({url : sUrl,
dataType: "jsonp",
type: "GET",
contentType: "application/json;charset=utf-8",
headers: { "accept": "application/json;charset=utf-8" },
error: function (a, b, c){
alert(a);
alert(a.status);
alert(b);
alert(c);
},
success: function (data) {
alert(data);
var viewModel = ko.mapping.fromJS(data);
alert(viewModel);
/*$.each(data, function (index, element) {
alert(index);
alert(element);
});*/
}
});
警报(数据)代码>给了我以下信息:
第二个警报告诉我:
function c(){if(0<arguments.length)return c.equalityComparer&&c.equalityComparer(d,arguments[0])||(c.K(),d=arguments[0],c.J()),this;a.q.bb(c);return d}
我只是不知道将这个JSON解析成一个好表的最佳方法是什么。我认为它将在viewmodel中为我提供一个行数组,并且我可以执行如下操作:
但是我不知道映射是否有效,以及如何绑定到例如number
prop
<tbody data-bind="foreach: iHaveNoClue">
<tr>
<td data-bind="text: 0"></td>
<td data-bind="text: id"></td>
<td data-bind="text: 1"></td>
<td data-bind="text: number"></td>
<td data-bind="text: 2"></td>
<td data-bind="text: date_time"></td>
</tr>
</tbody>
预先注意:因为您有名称为数字的属性,所以您必须跳过一些限制才能使文本
绑定处理程序正常工作。一种方法是将text:1
替换为text:$data['1']
你在正确的轨道上。iHaveNoClue
可以替换为$root
,例如:
<tbody data-bind="foreach: $root">
有关该版本的演示,请参阅。在本例中,viewModel是一个简单的对象,但您也可以创建一个构造函数来构建更复杂的视图模型。您好,Jeroen,谢谢您的回复。我有var viewModel=ko.mapping.fromJSON(数据)
而不是var viewModel=ko.mapping.fromJS(数据)我忘了ko.applyBindings(viewModel)代码>。你的$root
修复了它!再次感谢,让我开心!我注意到一只小虫子。viewmodel属性(如0、1、2)不会在JSFIDLE中解析。它不起作用。啊,你是对的。这是一个完全不同的问题。我已经更新了我的答案,并将小提琴与这个问题联系起来。
<tbody data-bind="foreach: $root">
var viewModel = {
title: ko.observable("My title"),
items: ko.mapping.fromJS(data)
};