我有一个knockout observableArray绑定到下面的表。可观察阵列不显示阵列中的所有项目
<table id="Users">
<thead>
<tr>
<td>User Name</td><td>Primary Email</td><td>Product Role</td><td>Active</td><td>EditUser?</td>
</tr>
</thead>
<tbody data-bind="foreach: CustomerUsers">
<tr>
<td data-bind="text: UserName"></td>
<td data-bind="text: PrimaryEmail().EmailAddress"></td>
<td><select></select></td>
<td data-bind="text: StaticActiveText"></td>
<td><a href="#" data-bind ="click: $parent.EditUser">Edit User</a></td>
</tr>
</tbody>
</table>
及以下视图模型:
function CustomerAdminVm() {
var vm = this
this.CustomerUsers = ko.observableArray(GetCustomerUsers());
}
我的问题是,当视图模型最初加载GetCustomerUsers
它正确地获得所需的值,并将其插入到观察的阵列。但是,这些元素不会显示在表格中。
奇怪的是,如果我调用下面的函数:
this.AddUserToCustomer = function() {
if (vm.NewUser) {
vm.CustomerUsers.push(vm.ActiveUser());
}
vm.CloseUserModalDialog();
}
用户被添加到阵列,以及正确地显示在表格中。更令人困惑的是,推送中数组的最新值显示的不是显示器的初始值在数组中。
有没有人有任何想法可能会导致此行为?
代码为GetCustomerUsers
是:
function GetCustomerUsers() {
var users = [];
$.ajax({
type: 'Get',
url: ControllerBase + 'Actions/GetAllUsersForCustomer',
async: false,
success: function (data) { users = $.map(data, function(item) { return new ObservableUser(item); }); }
});
return users;
}
而且ActiveUser
也是ObservableUser
。
GetCustomerUsers的代码是什么? – azurelogic 2014-09-26 15:45:57
我将添加代码,但它只是一个简单的ajax调用 – theDarse 2014-09-26 15:49:03
您的[代码对我来说工作正常](http://jsfiddle.net/zzssvqqu/1/)。请编辑您的问题,并确保我们可以使用它来[repro](http://sscce.org)该问题。 – Jeroen 2014-09-26 20:34:44