Knockout.js 淘汰赛不会改变

Knockout.js 淘汰赛不会改变,knockout.js,Knockout.js,这是我的密码: <table> <tbody data-bind="foreach:Models"> <tr> <td data-bind="text:Id"></td> <td data-bind="text:name"></td> </tr> </tbody> </table> function viewMod

这是我的密码:

<table>
  <tbody data-bind="foreach:Models">
     <tr>
         <td data-bind="text:Id"></td>
         <td data-bind="text:name"></td>
     </tr>
  </tbody>
</table>
function viewModel(){
   var self = this;
   self.Models = ko.observableArray();
}
var vm = new viewModel();

function mappingDatas(id){
  var results = [{ Id:1,name:"One" },{Id:2,name:"Two"}];
   if(id == 1)
   {
       results = [{ Id:3,name:"Three" },{Id:4,name:"Four"}];
   } 
   vm.Models = ko.mapping.fromJS(results);
   //vm.Models = ko.mapping.fromJS(results,vm.Models);//ie8 throw Stack overflow at line:4
   ko.applyBindings(vm);
}
$(function(){
   mappingDatas(0);
   $('#btn').click(function(){
      mappingDatas(1);
   })
});

函数viewModel(){
var self=这个;
self.Models=ko.observearray();
}
var vm=new viewModel();
函数映射数据(id){
var results=[{Id:1,name:“One”},{Id:2,name:“Two”}];
如果(id==1)
{
结果=[{Id:3,名称:“三”},{Id:4,名称:“四”}]
} 
vm.Models=ko.mapping.fromJS(结果);
//vm.Models=ko.mapping.fromJS(results,vm.Models);//ie8在第4行抛出堆栈溢出
ko.应用绑定(vm);
}
$(函数(){
mappingDatas(0);
$('#btn')。单击(函数(){
制图数据(1);
})
});
代码可能正在运行,但当结果发生变化(btn单击)时,它无法工作。错误为:“NotFoundError:未找到节点”。
我该怎么办?谢谢

我对你的js做了一点修改,现在似乎可以用了。更改结果数组后,不需要再次应用绑定,只需直接更新vm.Models即可。小提琴:

js:


不客气,如果答案有用,记得接受/投票。
function viewModel(){
   var self = this;
   self.Models = ko.observableArray();
}
var vm = new viewModel();

function mappingDatas(id){
  var results = [{ Id:1,name:"One" },{Id:2,name:"Two"}];
   if(id == 1)
   {
       results = [{ Id:3,name:"Three" },{Id:4,name:"Four"}];
   } 
    var vmResults = ko.mapping.fromJS(results);
   vm.Models(vmResults());

   //vm.Models = ko.mapping.fromJS(results,vm.Models);//ie8 throw Stack overflow at line:4
   //ko.applyBindings(vm);
}


   mappingDatas(0);
   $('#btn').click(function(){
      mappingDatas(1);
   })

ko.applyBindings(vm);