使用方法getGroups的ExtJS中的问题

时间:2014-01-28 12:09:22

标签: javascript extjs

我使用Ext JS 4.控制器用户加载同一型号的几个选项卡。每个选项卡的名称位于“组”列中。名称为“default”的选项卡是标准选项。以下是控制器的一些代码:

onLaunch: function(app) {
    var self = this;
    this.getUserStore().on("load", function(store) {
        var groups = store.getGroups();

        for (tab in self.tabs)
            try
            {
                Ext.ComponentQuery.query("#mainLayout")[0].remove(self.tabs[tab], true);
            }
            catch (err)
            {
                if (console)
                    console.log(err, "Happened, but it's okay");
            }

        self.tabs = [];

        for (var i = 0; i < groups.length; i++) {

            if (groups[i].name == "default")
                continue;

            var newStore = Ext.create("al.store.User2");

            newStore.loadRecords(groups[i].children);

            var id = "tab-id-" + groups[i].name;

            try
            {

                Ext.ComponentQuery.query("#mainLayout")[0].add({
                    xtype: 'userlist',
                    title: groups[i].name,
                    id: id,
                    store: newStore
                });
            }
            catch (err)
            {
                alert(err);
            }


            self.tabs.push(id);

        }

        store.clearFilter(true);
        store.filter([{id: "class", property: "group", value: "default"}]);
    });
},

refresh: function() {
    this.getUserStore().load();
},

问题在于,当您第一次加载时,一切正常,但是当用户尝试更新选项卡(方法“刷新”)时,丢失除标准之外的所有选项卡。方法“store.getGroups()”中的问题。此方法在第一次加载时正常工作,但是当用户尝试更新选项卡时,此方法会给出0组。如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

似乎是因为filter。在load处理程序的末尾,您设置了过滤器,该过滤器设置为仅显示默认组。

答案 1 :(得分:0)

看来,第二次加载商店时,它不会获取任何数据。验证请求是否有效(包含(所有最终)参数)并且该请求返回数据。

希望有所帮助:)

PS。

如果不是这种情况,请向我展示包含响应数据的商店,型号和示例请求。

PS2。

还有一件事 - 你称之为“标签”是什么?我不明白“模特标签”。