我使用KnockoutJS显示用户列表。在同一页面上,链接会触发影子框模式窗口。当用户关闭模式时,我希望刷新用户列表。我已经有了Shadowbox模式触发的回调函数,但是如何让它刷新用户列表呢?
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());
答案 0 :(得分:0)
你看过淘汰赛的地图吗?它处理来自服务器的数据更新:
http://knockoutjs.com/documentation/plugins-mapping.html
我会在您的viewmodel上创建一个“数据”属性,该属性从knockout映射加载,并可以从那里更新。我会在jsfiddle上工作并更新这个答案。
<强>更新强>
我正在研究一个JSFiddle,但发现了一个已经完成的:-)(谢谢RP Niemeyer!)
http://jsfiddle.net/rniemeyer/EDC7q/
更新2
我更新了你的JSFiddle:http://jsfiddle.net/sb2BX/1/
到这一个:http://jsfiddle.net/JasonMore/sb2BX/3/
看到它工作,首先单击“加载初始数据”,然后单击“Shadowbox回调”。这是否回答了你的问题?