サーバーからロードされたオブジェクトの配列から更新された列を取得できません。
私はこのようなものを持っています:
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をに設定したときに、UI がそれを表示するようにしようとしていますfalse
。
理想的には IsActive が監視可能であることはわかっていますが、配列をサーバーから直接取得するため、どうすればよいかわかりません。
第二に、私はどういうわけか配列を再評価するためにノックアウトしようとしています。
いくつかの代替案を試しましたが、そのうちの 1 つが次のようになります。
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();
しかし、それはすべて無駄に思えます。列には常に元の値が表示されます。どこが間違っていますか、または何をすべきですか?