0

我正在使用 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());
4

1 回答 1

0

你看过淘汰赛映射吗?它处理来自服务器的数据更新:

http://knockoutjs.com/documentation/plugins-mapping.html

我会在您的视图模型上创建一个“数据”属性,该属性从剔除映射中加载,并且可以从那里更新。我将处理 jsfiddle 并更新此答案。

更新

我正在研究一个 JSFiddle,但发现一个已经完成的 :-)(感谢 RP Niemeyer!)

http://jsfiddle.net/rniemeyer/EDC7q/

更新 2

我更新了你的 JSFiddle:http: //jsfiddle.net/sb2BX/1/

到这个:http: //jsfiddle.net/JasonMore/sb2BX/3/

看到它工作,首先单击“加载初始数据”,然后单击“Shadowbox Callback”。这回答了你的问题了吗?

于 2012-05-03T15:56:42.017 回答