表示されると基本的にグリッドである観察可能な配列「users」があります。ユーザーは LoginId のリンクをクリックすると、モデルが開き、単一のユーザー (名、姓、およびグリッド ビューにないその他の情報など) を編集できます。ユーザーが編集モーダルで FirstName を変更した場合、保存が成功した後にグリッドに反映させたいと思います。私は2つのアプローチを見てきました.arrayFirstを使用して検索し、グリッドにユーザーを削除/再追加するか、観測可能な配列内の各アイテムを観測可能にします。これを機能させるための最良の方法と、それが最善の方法である場合にオブザーバブル配列オブザーバブルを適切に設定する方法がわかりません。
function UserViewModel() {
var self = this;
//data which is populated on a load AJAX function => self.users(msg.d);
self.users = ko.observableArray([]);
self.updateUser = function () {
//set edit modal elements
self.editFirstName(this.FirstName);
//set the rest for edit
//open modal, user edits 'editFirstName' and hits save
//data saved to DB
//now I want to update the FirstName the user edited in the users array so I don't have to repull all users in the grid
}
}
HTML フラグメント
<tbody data-bind="foreach: users">
<tr>
<td class="border-left"><a href="#" data-bind="text: LoginId,click: $parent.updateUser"/></td>
<td data-bind="text: FirstName"/>
<td data-bind="text: LastName"/>
<td data-bind="text: EmailAddress"/>
<td data-bind="text: AccessLevel"/>
<td data-bind="text: Status" class="border-right" />
</tr>
</tbody>