ExtJs 6存储在Grid中不可见

时间:2015-11-16 15:37:50

标签: extjs4.2 extjs6 extjs6-classic

我正在尝试将现有的应用程序从ExtJs 4.2.1移植到6.0.1 在调试器中我看到网格有' ext-empty-store '存储而不是'store.accounting.Quota'的问题 我可以直接在面板激活监听器中加载商店     var store = Ext.data.StoreManager.lookup('QuotaKPI.store.accounting.Quota');     store.load(); 在萤火虫中,我看到请求和完美的json响应,但网格中没有任何内容

以下是代码段

应用程序/商店/计费/ Quota.js

Ext.define('QuotaKPI.store.accounting.Quota', {
    extend: 'Ext.data.JsonStore',
    model: 'QuotaKPI.model.accounting.QuotaModel',
    alias: 'store.accounting.Quota',
    storeId: 'QuotaKPI.store.accounting.Quota',
    autoLoad: false,
    proxy: {
        ...
    }
});

应用程序/视图/计费/ QuotaGrid.js

Ext.define('QuotaKPI.view.accounting.QuotaGrid', {
    extend: 'Ext.grid.Panel'
    ,xtype: 'QuotaGrid'
    ,store: Ext.data.StoreManager.lookup('QuotaKPI.store.accounting.Quota')

    ,columns: [ 
    ...
    ]

    ,dockedItems : [
                   ,{xtype: 'pagingtoolbar', 
                    dock:'bottom',
            store: Ext.data.StoreManager.lookup('QuotaKPI.store.accounting.Quota'),
            displayInfo: true,
            displayMsg: 'Displaying Quota Details {0} - {1} of {2}',
            emptyMsg: "No Quota to display"
            }
                   ]
    ,initComponent: function() {
            this.callParent(arguments);
        }       
   });

在控制器中声明的商店,模型和网格

Ext.define('QuotaKPI.controller.accounting.AccountingController', {
    extend: 'Ext.app.Controller',
    stores: ['accounting.Quota'],
    models: ['accounting.QuotaModel'],
    views: ['accounting.QuotaGrid']
    ...

控制器本身列在app.js

Ext.application({
    name: 'QuotaKPI',
    controllers: [
        'accounting.AccountingController'
    ],
    init: function(app){
    },
    autoCreateViewport: true
});

请帮忙吗?

1 个答案:

答案 0 :(得分:1)

我知道 storeId 不接受某些字符(例如“ - ”),我不知道点...无论如何我建议简单一点。 试试“myStoreId”

此外,您可以尝试:

Ext.define('QuotaKPI.view.accounting.QuotaGrid', {
    extend: 'Ext.grid.Panel'
    ,xtype: 'QuotaGrid'
    ,store: "myStoreId",

    ,columns: [ 
    ...
    ]

    ,dockedItems : [
                   ,{xtype: 'pagingtoolbar', 
                    dock:'bottom',
            store: "myStoreId",
            displayInfo: true,
            displayMsg: 'Displaying Quota Details {0} - {1} of {2}',
            emptyMsg: "No Quota to display"
            }
                   ]
    ,initComponent: function() {
            this.callParent(arguments);
        }       
   });

此外,我建议您确保拥有正确的架构配置(请参阅http://docs.sencha.com/extjs/6.0/6.0.1-classic/#!/api/Ext.data.schema.Schema

然后,您也可以尝试使用ViewModel而不是 storeId (请参阅http://docs.sencha.com/extjs/5.0/application_architecture/view_models_data_binding.html

不要犹豫,https://fiddle.sencha.com/#home

祝你好运! 过渡并不容易......