我正在尝试动态创建grid.Panel并将它们添加到我的View中,因为我不知道在加载数据之前我需要很多“视图”。例如,我有很多人在不同的组中,一旦我加载数据,我想为每个组创建一个grid.Panel并将正确的人放入其中。
问题是我的应用程序在我执行时挂起(可能是因为正在递归加载Store)
如何使用来自商店的数据将grid.Panel添加到我的View中而不挂起?
我的控制器:
Ext.define('NG.controller.Navigation', {
extend: 'Ext.app.Controller',
refs: [{
selector: 'group',
ref: 'groupPanel'}
],
stores: ['Groups'],
init: function() {
this.control({
'navigation': {
itemdblclick: this.onNavigationSelection
}
});
},
onNavigationSelection: function(view, record, item, index, eventobj, obj) {
var groupsstore = this.getGroupsStore();
var group1 = Ext.create('Ext.grid.Panel', {
store: groupsstore,
title: 'Group 1',
columns: [
{header: 'Name', dataIndex: 'name'},
{header: 'Mail:', dataIndex: 'mail'}
]
});
groupsstore.load();
this.getGroupPanel().add(group1);
}
});
我的观点:
Ext.define('NG.view.Group', {
extend: 'Ext.panel.Panel',
alias: 'widget.group',
store: 'Groups',
initComponent: function() {
this.callParent();
}
});
我的商店(不确定是否需要):
Ext.define('NG.store.Groups', {
extend: 'Ext.data.Store',
requires: 'NG.model.Person',
model: 'NG.model.Person'
});
致以最诚挚的问候,并提前感谢您!
安德烈亚斯
答案 0 :(得分:1)
在遍历每个引用之后,我在代码中找不到任何错误。但是我发现了一个关于类似问题的错误报告:
我上周下载了这个框架,几天前有一个更新,它解决了这个bug和我的问题。
感谢您的帮助!
答案 1 :(得分:0)
store.load()事件是异步的。 尝试切换添加面板并加载存储事件:
this.getGroupPanel().add(group1);
groupsstore.load();
另一件事是它看起来好像你正在向商店传递任何东西来加载它。因此,您可以自动加载它并提前准备好数据。