Knockout.js knockoutJS-从其他javascript函数重新绑定表
我使用KnockoutJS来显示用户列表。在同一页上,一个链接会触发一个阴影框模式窗口。当用户关闭模式时,我希望刷新用户列表。我已经有了来自Shadowbox模式触发的回调函数,但是如何让它刷新用户列表呢Knockout.js knockoutJS-从其他javascript函数重新绑定表,knockout.js,Knockout.js,我使用KnockoutJS来显示用户列表。在同一页上,一个链接会触发一个阴影框模式窗口。当用户关闭模式时,我希望刷新用户列表。我已经有了来自Shadowbox模式触发的回调函数,但是如何让它刷新用户列表呢 function User(data) { this.firstname = ko.observable(data.firstname); this.lastname = ko.observable(data.lastname);
function User(data) {
this.firstname = ko.observable(data.firstname);
this.lastname = ko.observable(data.lastname);
this.fullname = ko.computed(function () {
return this.firstname() + " " + this.lastname();
}, this);
this.userfunctions = ko.observable(data.userfunctions);
this.phonework = ko.observable(data.phonework);
this.phonemobile = ko.observable(data.phonemobile);
this.email = ko.observable(data.email);
this.editurl = ko.observable(data.editurl);
}
function UserListViewModel() {
var self = this;
self.users = ko.observableArray([]);
self.users.loading = ko.observable(false);
self.users.loading(true);
$.getJSON("/UserJSON.ashx", {
requestType: "userList",
pageId: '12',
companyId: '1'
},
function (allData) {
var mappedUsers = $.map(allData, function (item) { return new User(item); });
self.users(mappedUsers);
self.users.loading(false);
});
}
ko.applyBindings(new UserListViewModel());
你看过淘汰图了吗?它处理来自服务器的数据更新: 我将在viewmodel上创建一个数据属性,该属性从敲除映射中加载,并可以从中更新。我将使用JSFIDLE并更新这个答案 更新 我正在开发一个JSFIDLE,但发现一个已经完成了:-谢谢RP Niemeyer 更新2 我更新了你的JSFIDLE: 对于这一点:
若要查看其工作情况,请首先单击“加载初始数据”,然后单击“阴影盒回调”。这是否回答了您的问题?在模式窗口中,您是添加条目还是修改已有的条目?如果修改,您是在修改self.users中的实际实例还是新的用户对象,然后在用户确认后替换self.users中的实例将建议第二个实例以允许取消更改。顺便说一句,我假设您的目的是刷新用户列表,您的意思是不必返回到/UserJSON.ashx。我已经处理了从服务器加载数据的过程。我需要弄清楚如何从另一个js函数调用'click:loadUpdateData'。。。我有一个现有的回调函数,当我关闭一个ShadowBox-modal时,它正在被调用。你看JSFIDLE了吗?我现在可能有点迟钝,但我不知道这如何显示如何从另一个函数调用LoadUpdateData。它只是告诉我如何绑定一个点击事件的按钮,我没有。。。查看更新的小提琴。在底部你可以看到我的功能。