ExtJS 4.2获取子组件的存储

时间:2014-08-09 17:56:42

标签: extjs extjs4 extjs4.1 extjs4.2 extjs-mvc

我有panel 动态我可以添加为网格,图表等项目。

其中任何一个“Widgets”(网格,图表等)都有store

  

我的panel有一个“refresh toolonRefreshClick我要重新加载“小工具store

在我的主控制器中,我有:

onRefreshClick: function (tool) {
        console.log('refresh widget store');

        var me = this,
            panel = tool.up('panel');

        // here I want to access the store of the child item.

        // So I can do:
        /*

            widgetStore.load();

        */

    },

我不知道它的小部件是网格,图表,数据视图等?所以我只需要获得子组件的存储。

  

关于如何实现这一目标的任何线索?

2 个答案:

答案 0 :(得分:1)

Ext.each(panel.query(), function(widget){
   if(!Ext.isEmpty(widget.getStore()) widget.getStore().load();
})

答案 1 :(得分:0)

我认为你不能使用ComponentQuery来检索商店,所以我会做类似的事情:

for (var i = 0; i < panel.items.items.length; i++) {
    try {
        store = panel.items.items[i].getStore();
        if (store != null) break;
    } catch (err) {
        //the component you looped through does not have a store...
    }
}

if (store != null)
    store.load();

不漂亮,但应该有效。现在,如果有时你的组件是嵌套的,也许你可以将它重构为一个递归函数(一个自己调用的函数)