0

ExtJs 4.2.1 から 6.0.1 に既存のアプリケーションを移植しようとしています。デバッガーで、グリッドに「store.accounting.Quota」の代わりに「ext-empty-store」ストアがあることがわかります。ストアを直接ロードできます。 var store = Ext.data.StoreManager.lookup('QuotaKPI.store.accounting.Quota'); を実行して、パネル アクティベーション リスナーで store.load(); firebug では、リクエストとパーフェクト json がレスポンスで表示されますが、グリッドには何も表示されません

ここにコードスニペットがあります

app/store/accounting/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
});

何か助けてください。

4

1 に答える 1

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を参照) 。

そして、storeIdの代わりに ViewModel を試すこともできます( http://docs.sencha.com/extjs/5.0/application_architecture/view_models_data_binding.htmlを参照) 。

https://fiddle.sencha.com/#homeを実行することを躊躇しないでください。

幸運を!移行は簡単ではありません...

于 2015-11-16T20:54:56.770 に答える