我有一个可观察的数组“用户”,它在显示时基本上是一个网格。用户将单击 LoginId 的链接,该链接将打开一个模型来编辑单个用户(名字、姓氏,以及更多不在网格视图中的内容等)。如果用户在编辑模式上更改名字,我希望它在成功保存后反映在网格上。我见过两种方法:使用 arrayFirst 查找并将用户删除/重新添加到网格或使可观察数组中的每个项目可观察。我不确定什么是让它工作的最佳方法,以及如何正确设置 observable 数组 observable 如果这是最好的方法。
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>