我使用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组。如何解决这个问题?
答案 0 :(得分:1)
似乎是因为filter
。在load
处理程序的末尾,您设置了过滤器,该过滤器设置为仅显示默认组。
答案 1 :(得分:0)
看来,第二次加载商店时,它不会获取任何数据。验证请求是否有效(包含(所有最终)参数)并且该请求返回数据。
希望有所帮助:)
PS。
如果不是这种情况,请向我展示包含响应数据的商店,型号和示例请求。
PS2。
还有一件事 - 你称之为“标签”是什么?我不明白“模特标签”。