敲除-Foreach绑定-如何在HTML中反映更新的值

敲除-Foreach绑定-如何在HTML中反映更新的值,html,knockout.js,Html,Knockout.js,我有一个observableArray变量,其数组如下所示: self.EmployeeNames = ko.observableArray([]); self.EmployeeNames.push({id: 1, name: 'Jasmine', isActive: false}); self.EmployeeNames.push({id: 2, name: 'Jhon', isActive: true}); self.EmployeeNames.push({id: 3, name: 'jul

我有一个observableArray变量,其数组如下所示:

self.EmployeeNames = ko.observableArray([]);
self.EmployeeNames.push({id: 1, name: 'Jasmine', isActive: false});
self.EmployeeNames.push({id: 2, name: 'Jhon', isActive: true});
self.EmployeeNames.push({id: 3, name: 'juliet', isActive: false});
在HTML内部的应用程序中,我使用
Knockout-foreach
绑定,如下所示:

<div data-bind="foreach: EmployeeNames">
  <div class="container" data-bind="text: $data.name, css: {active: isActive}, click: $parent.setEmployeeToActive">
  </div>
</div>
self.setEmployeeToActive = function(selectedEmp) {
    self.EmployeeNames().forEach(function(emp){
      if(emp.id === selectedEmp.id) {
        emp.isActive = true;
      }
      else {
        emp.isActive = false;
      }
    });

    self.EmployeeNames.valueHasMutated();
  };
但它并没有反映在HTML中

我尝试了
valuehassmutated
,但没有成功


阵列元素的成员也必须是可见的

self.EmployeeNames.push({id: ko.observable(1), name: ko.observable('Jasmine'), isActive: ko.observable(false)});

我不认为成员也应该被观察到。如果我的主数组是可观察的,那么每当可观察数组发生变化时,应该在HTML中重新选择它。“简单地将一个对象放入observableArray并不能使该对象的所有属性本身都可见。当然,如果您愿意,您可以使这些属性可见,但这是一个独立的选择。observableArray只跟踪它持有的对象,并在添加或删除对象时通知侦听器。”(from)我尝试了其他解决方案,但没有成功。但是通过使属性可观察,它工作得很好。