敲除-Foreach绑定-如何在HTML中反映更新的值
我有一个observableArray变量,其数组如下所示:敲除-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
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)我尝试了其他解决方案,但没有成功。但是通过使属性可观察,它工作得很好。