我使用Knockout JS和映射插件將MVC viewmodel映射到viewmodel屬性;KnockoutJS綁定不顯示
var viewModel = function() {
var self = this;
self.EntityKey = 0;
self.observables = ko.observable();
self.RoleName = ko.observable("");
// CRUD Actions
self.getPaged = function (page) {
$.ajax({
url: "/Core/Authentication/Role/UpdateIndex",
dataType: 'json',
data: { pageNumber: page },
success: function (result) {
self.observables = ko.mapping.fromJS(result);
},
});
};
this.remove = function (data) {
$.ajax({
type: "POST",
url: "/Core/Authentication/Role/Delete",
dataType: 'json',
data: { userId: data.EntityKey() },
success: function (result) {
self.getPaged(self.observables.CurrentPage);
toastr.success(result);
},
});
};
this.update = function (data) {
$.ajax({
type: "POST",
url: "/Core/Authentication/Role/Update",
dataType: 'json',
data: ko.toJSON(this),
success: function (result) {
toastr.success(result);
},
});
};
this.create = function() {
$.ajax({
type: "POST",
url: "/Core/Authentication/Role/Create",
dataType: 'json',
data: ko.toJSON(this),
success: function (result) {
self.getPaged(self.observables.CurrentPage);
toastr.success(result);
self.RoleName("");
},
});
};
self.getPaged(1);
}
$(function() {
var vm = new viewModel();
ko.applyBindings(vm);
});
這是我的觀點;
<table data-bind="visible: observables.PageItems">
<tr>
<th>@AuthRes.Resource.EntityKey</th>
<th>@AuthRes.Resource.RoleName</th>
<th>@AuthRes.Resource.Update</th>
<th>@AuthRes.Resource.Delete</th>
</tr>
<tr data-bind="foreach: observables.PageItems">
<td><span data-bind="text: $data.EntityKey" /></td>
<td><input type="text" data-bind="value: $data.RoleName" /></td>
<td><a data-bind="click: $root.update.bind($data)">@AuthRes.Resource.Update</a></td>
<td><a href='#' data-bind="click: $root.remove.bind($data)">@AuthRes.Resource.Delete</a></td>
</tr>
</table>
<h2>@AuthRes.Resource.CreateNew</h2>
<table>
<tr>
<th>@AuthRes.Resource.RoleName</th>
<th></th>
</tr>
<tr>
<td>
<input type="text" required="required" data-bind="value: RoleName" />
</td>
<td>
<a href="#" data-bind="click: $root.create" />@AuthRes.Resource.Submit</a>
</td>
</tr>
</table>
viewModel.observables正確更新,數據是正確的,但由於某種原因未綁定到的foreach爲observables.PageItems。
任何想法我做錯了什麼?
雖然,這將有助於,遺憾的是它並沒有解決我的問題。儘管PageItem包含數據,整個表仍然保持隱藏狀態。 – EverythingGeek
哦,我認爲問題是在foreach,我會更新 –
我已經做出了改變,但表仍然沒有顯示。數據肯定是更新,但我有一個警報,目前有15個記錄。 – EverythingGeek