【问题标题】:ExtJS 4: Store data not populated with data inside store load callback functionExtJS 4:存储数据未填充存储加载回调函数中的数据
【发布时间】: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();
                        });

【问题讨论】:

    标签: extjs callback extjs4 load store


    【解决方案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,
    

    【讨论】:

      猜你喜欢
      • 2012-02-14
      • 2013-08-25
      • 2013-02-12
      • 1970-01-01
      • 1970-01-01
      • 2018-12-19
      • 2015-08-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多