淘汰JS - 从另一个javascript函数重新绑定表

时间:2012-05-03 13:37:47

标签: knockout.js

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

1 个答案:

答案 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回调”。这是否回答了你的问题?