我有一個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