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

时间:2014-07-24 21:22:05

标签: extjs callback extjs4 load store

为什么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 个答案:

答案 0 :(得分:0)

我想如果我要设置" remoteFilters"如果真的,那就行了。

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

查看代码:

                        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,