Data binding 敲除Json数据绑定问题
我试图使用knockout将Json数据绑定到UI,但在UI中始终没有任何绑定。下面是我尝试绑定json数据的链接。浏览器没有显示任何错误。你能帮我看看我这里缺什么吗Data binding 敲除Json数据绑定问题,data-binding,knockout.js,Data Binding,Knockout.js,我试图使用knockout将Json数据绑定到UI,但在UI中始终没有任何绑定。下面是我尝试绑定json数据的链接。浏览器没有显示任何错误。你能帮我看看我这里缺什么吗 你好,普朗克! $(函数(){ var测试=功能(数据){ var self=这个; self.abc=data.abc; self.name=ko.observable(data.DDA.name); } var viewModel=函数(){ var self=这个; self.myTestData=ko.obse
你好,普朗克!
$(函数(){
var测试=功能(数据){
var self=这个;
self.abc=data.abc;
self.name=ko.observable(data.DDA.name);
}
var viewModel=函数(){
var self=这个;
self.myTestData=ko.observearray([]);
self.GetMyDyta=函数(){
var processedResults=ko.observableArray([]);
$。每个(myData,函数(索引,数据){
processedResults.push(新测试(数据));
});
self.myTestData.pushAll(processedResults());
}
}
var vm=new viewModel()
vm.GetMyData;
ko.应用绑定(vm);
});
var myData=[{
“ABC”:“ABC1234”,
“多哈发展议程”:{
“名称”:“1234.5678”,
“编号”:{
“结束”:1234,
“开始”:5678
}
}
}, {
“ABC”:“BSP1234”,
“多哈发展议程”:{
“名称”:“1234.5678”,
“编号”:{
“结束”:1234,
“开始”:5678
}
}
}]
您确实有一个错误,因为您拼错了self.GetMtDyta
。使用浏览器开发人员工具控制台查找代码可能产生的错误
第二个问题是myTestData
不包含您认为它的功能:在self.myTestData.push(processedResults())
中,似乎要将新的test
对象附加到数组中。相反,您要做的是将可观察数组本身附加到myTestData
请尝试以下方法:
self.GetMyData = function () {
$.each(myData, function (index, data) {
self.myTestData.push(new test(data));
});
}
调试此类问题的一个好方法是ko.dataFor
:
- 打开浏览器的开发工具-最好是Firefox、Chrome或Safari
- 转到元素面板(“Firefox中的Inspector”)并显示控制台(按“ESC”)
- 选择您想要知道其敲除绑定的DOM元素-在本例中是我们的
- 在控制台中,为($0)输入
<代码>$0始终指当前选定的元素ko.dataFor
abc
和dda
属性的单个对象,这就是text:abc
绑定失败并出现控制台错误的原因
Uncaught ReferenceError: Unable to process binding "foreach: function (){return myTestData }"
Message: Unable to process binding "text: function (){return abc }"
Message: abc is not defined
这不是一个答案,而是一个评论。@Ilyaluzinin你当然是对的-我没有测试我的答案,错过了第二个问题。我已经修改了答案-谢谢你的提醒!
Uncaught ReferenceError: Unable to process binding "foreach: function (){return myTestData }"
Message: Unable to process binding "text: function (){return abc }"
Message: abc is not defined