ExtJS 4:存储数据未填充存储加载回调函数中的数据

Posted

技术标签:

【中文标题】ExtJS 4:存储数据未填充存储加载回调函数中的数据【英文标题】:ExtJS 4: Store data not populated with data inside store load callback function 【发布时间】:2014-09-16 15:03:53 【问题描述】:

为什么将records.length设置为大于0的数字,而store.data.length却等于0?我基本上是在尝试在回调中引用我的商店,以便在我将数据添加到表单之前,我的网格有数据。但是由于某种原因,商店数据不存在。如果您有更好的方法来实现相同的最终结果,我愿意将其更改为您的建议。本质上,每个网格都是基于此代码的包装循环中的不同过滤器动态构建的。

                            var p = item.get('p');
                            var store = Ext.create('App.store.example.MyStore');
                            store.clearFilter(true);
                            store.filter('s', s);
                            store.filter('p', p);

                            store.load(

                                callback: function(records, operation, success) 
alert(store.data.length);
alert(records.length);
                                    var grid = Ext.create('App.view.example.MyGrid', 
                                        store: store
                                    );

                                    formPanel.add(
                                        Ext.create('Ext.form.FieldSet', 
                                            id: p + '_TOP',
                                            title: p,
                                            width: '100%',
                                            anchor: '100%',
                                            layout: 
                                                type: 'vbox',
                                                align: 'stretch'
                                            ,
                                            items: [myGrid]
                                        )
                                    );
                                    formPanel.doLayout();


                                
                            );

                            formPanel.doLayout();
                        );

【问题讨论】:

【参考方案1】:

我想如果我只是将“remoteFilters”设置为 true,它会起作用的。

但我简化了一点。我在商店创建配置中设置了过滤器。并且必须在我的模型中设置两个配置才能使其正常工作。这样,我不必手动设置过滤器或执行加载(因为我有商店自动加载它)。

查看代码:

                        var store = Ext.create('App.store.example.MyStore', 
                            filters: [
                                property: 's',
                                value: s
                            ,
                                property: 'p',
                                value: p
                            ]
                        );

                        var grid = Ext.create('App.view.example.MyGrid', 
                            store: store
                        );
                        formPanel.add(
                            Ext.create('Ext.form.FieldSet', 
                                id: p + '_TOP',
                                title: p,
                                width: '100%',
                                anchor: '100%',
                                layout: 
                                    type: 'vbox',
                                    align: 'stretch'
                                ,
                                items: [grid]
                            )
                        );

存储配置:

autoLoad: true,
remoteFilter: true,

【讨论】:

以上是关于ExtJS 4:存储数据未填充存储加载回调函数中的数据的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JSON 数据数组加载 extjs 3.4 存储

Ext JS 4 存储加载回调

ExtJS 4 存储回调函数不获取记录

从 ExtJS 4 中的存储重新加载数据

ExtJS Grid Panel 没有从存储中填充数据

extjs ajax调用存储未加载