【发布时间】:2014-07-04 09:02:42
【问题描述】:
我正在使用带有映射插件的 Knockout JS 将 MVC 视图模型映射到视图模型属性;
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 更新正确,数据正确,但由于某种原因没有绑定到 observables.PageItems 的 foreach。
知道我做错了什么吗?
【问题讨论】:
标签: knockout.js