javascript - ASP.net MVC/Knockout JS 映射 - 无法更新 ViewModel

标签 javascript asp.net-mvc-4 knockout.js knockout-mapping-plugin

这看起来很简单,但我是 Knockout JS 的新手。经过一系列教程后,我想出了这个:

// Create view model
        var viewModel = function () {
            var self = this;
            self.master = ko.mapping.fromJS(@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model)));
            self.total_results = ko.observable(self.master.totalRecordCount());
            self.pager = ko.pager(self.total_results);
            self.pager().CurrentPage.subscribe(function () {
                self.search();
            })
            self.search = function () {
                $.ajax({
                    type: "GET",
                    url: "/api/get?data=1&start_index=" + self.pager().FirstItemIndex() + "&end_index=" + self.pager().LastItemIndex() + "",
                }).done(function (pagedData) {
                    // Map model; create pager
                   ko.mapping.fromJS(pagedData, self.master);
                   //self.total_results(self.master.totalRecordCount());
                }).error(function (ex) {
                    alert("Error");
                });
            }
        }

        $(function () {
            // Apply
            ko.applyBindings(viewModel);
        });

当我单击分页按钮时,搜索方法将运行并获取新数据。当我更新 ViewModel 时...什么也没有发生。有什么想法吗?

最佳答案

您想要更新self.master的内容,而不是覆盖它。因此,将 done 回调中的该行更改为:

// Map model; create pager
ko.mapping.fromJS(pagedData, self.master);

关于javascript - ASP.net MVC/Knockout JS 映射 - 无法更新 ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27018194/

相关文章:

c# - 从模型 MVC 中取消绑定(bind)属性

javascript - 在提示时检测空值

javascript - 如何使用异步将错误传递回调用者函数?

asp.net-mvc - 在 MVC4 中将 Ninject 与 SignalR 结合使用

c# - 更改@html.DropDownList值时显示警告框

javascript - knockout/MVVM 设计问题

javascript - 仅当 observable 尚未在 knockout.js 中设置为某个值时才更改它

javascript - 具有内联编辑功能的 Knockout CRUD 表

javascript - 如何确保用户只能删除特定记录?

javascript - 使用 Postman 检查嵌套 JSON 中的值