extjs存储代理不调用xtype

时间:2018-01-28 04:25:16

标签: javascript extjs extjs5

我有一个弹出窗口,有一些xtypes,一个xtype是一个网格,有一个商店,但我没有看到它调用任何ajax调用。有人能告诉我我错过了什么吗?

Ext.define('myApp.view.myPopup' {...
....
{
            xtype: 'grid',
            store: 'MyStore',
            iconCls: 'x-fa fa-users',
            height : 450,
            columns: [{
                header...

...}

存储

Ext.define('myApp.store.MyStore', {
    extend: 'Ext.data.Store', 
    model: 'myApp.model.modelA',
    pageSize: 100,
    remoteSort: true,
    autoload : true,
    proxy: {
        type: 'ajax',
        url : 'getStatusId',
        reader: {
            type: 'json',
            root: 'rows',
            successproperty: 'status',
            totalProperty: 'records'        
        }
    },
    listeners : {
        beforeload : function(store, operation, eOpts) {
            ...
            store.getProxy().extraParams = submitParams;
        }
    }

});

3 个答案:

答案 0 :(得分:3)

你有一个拼写错误:autoload - > autoLoad

您的代码也不会显示正在创建的商店的实例。 store: 'MyStore'要求现有商店实例的storeId: 'MyStore'

你可能想要更像的东西:

Ext.define('myApp.view.myPopup' {...
....
{
            xtype: 'grid',
            store: { type: 'myStore' },
            iconCls: 'x-fa fa-users',
            height : 450,
            columns: [{
                header...

...}

Ext.define('myApp.store.MyStore', {
    extend: 'Ext.data.Store', 
    alias: 'store.myStore',
    model: 'myApp.model.modelA',
    // ....
});

答案 1 :(得分:2)

创建商店实例并指向它。

 var store = Ext.create('myApp.store.MyStore' {
                autoLoad : true,        
            });
..........

    {       xtype: 'grid',
            store: store,
            iconCls: 'x-fa fa-users',
            height : 450,

    }

答案 2 :(得分:2)

与@ evan-trimboli一样,您必须使用一个存储实例,或者您可以使用配置。然后,配置将导致为您内部创建的新商店实例。

要使用配置动态创建商店实例,您需要在商店类上提供别名,例如alias: "store.mystore"。 现在,您可以在网格类的商店配置中引用它,如store: { type: 'myStore' }

将所有内容汇总到下方,另请参阅a running fiddle

Ext.define('myApp.store.MyStore', {
    extend: 'Ext.data.Store',
    alias: 'store.mystore',  // the alias we need for the store config of the grid
    // ...
});

Ext.define('myApp.view.myPopup', {
    extend: 'Ext.grid.Panel',
    store: {
        type: 'mystore' // references the store by it's alias
    },
    // ...
};