0
我无法从从服务器加载的对象数组中更新列。未能重新评估绑定到表行的属性knockout.js-style
我有这样的事情:
self.tenants = ko.observableArray([{"Id":1,"Name":"Tenant 1","IsActive":true}]);
self.selectedTenant = ko.observable(null);
UI:
<tbody data-bind="foreach: tenants">
<tr data-bind="css: { 'active-row': $root.selectedTenant() === $data }">
<td><a href="#" data-bind="click: $root.select">Select</a></td>
<td data-bind="text: Name"></td>
<td data-bind="text: Count"></td>
<td></td>
<td></td>
<td data-bind="text: IsActive"></td>
</tr>
</tbody>
现在我想确保用户界面显示出来,当我设置为IsActive到false
。
我知道理想的IsActive是可观察的,但由于我直接从服务器获得数组,所以我不知道我该怎么做。
其次我想方设法去淘汰赛重新评估数组。
我尝试了好几种方案,其中之一是这样的:
var selected = self.selectedTenant();
selected.IsActive = true;
var idx = self.tenants.indexOf(selected);
//self.tenants.remove(selected);
var newArray = self.tenants().splice(idx, 1, selected);
self.tenants(newArray);
//self.tenants.valueHasMutated();
但是这一切似乎是徒劳,列始终显示原始值。我错在哪里,或者我应该怎么做?