Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Data binding 敲除Json数据绑定问题_Data Binding_Knockout.js - Fatal编程技术网

Data binding 敲除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

我试图使用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.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)输入
    ko.dataFor
    <代码>$0始终指当前选定的元素
正如您所看到的,我们使用了一个带有to元素的数组,而不是一个带有
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