0

App.jsの私のコードはここにあります:

Ext.Loader.setConfig({
    enabled: true
});

Ext.application({
    name: 'KP',
    appFolder: 'scripts/app',

    controllers: [
        'MainSearch', 'List'
    ],

    launch: function () {
        Ext.create('Ext.container.Viewport', {
            items: {
                xtype: 'searchdata'
            }
        });
    }
});

問題は次のとおりです。model('List')、store('List')、view('List')、controller('List')があります。これらはすべてグリッド用です。store('List')で、データを提供するサービスを呼び出しました。

「MainSearch」フォームの後にグリッドを表示したい。そこで、最初に「MainSearch」と呼びました。(App.js内)。しかし、「MainSearch」というフォームがブラウザに表示される前に、「List」のサービスが呼び出されました。なぜそれが起こるのか分かりません。(「リスト」コントローラーがApp.jsに含まれていない場合-すべて正常に動作します)

「リスト」の「ストア」コード:

Ext.define('KP.store.List', {

    extend: 'Ext.data.Store',
    model: 'KP.model.List',          

    autoLoad: true,

    pageSize: 20,
    autoLoad: { start: 0, limit: 20 },


    autoSync: true,
    proxy: {
        type: 'ajax',
        limitParam: 'size',
        startParam: undefined,
        api: {

        read: '/adres/listls'
        },
        reader: {
            type: 'json',
            root: 'data',
            successProperty: 'success',
            totalProperty: 'total'
        }     
    }

});

「リスト」コントローラーコード:

Ext.define('KP.controller.List', {

    extend: 'Ext.app.Controller',

    views: ['personAccount.List'],
    models: ['List'],
    stores: ['List'],

    init: function () {
        this.control({
            'list button[action=close]': {
                click: this.closeClick
            }
        });
    },

    //закрытие формы
    closeClick: function (button) {
        var win = button.up('window');
        win.close();
    }

}); 

マイリストビューコード:

Ext.define('KP.view.personAccount.List', {
    extend: 'Ext.window.Window',
    alias: 'widget.list',

    autoScroll: true,
    modal: false,
    plain: false,
    autoShow: true,
    layout: {
        type: 'fit'
    },

    initComponent: function () {
        var me = this;
        Ext.applyIf(me, {

            items: [
                            {
                                xtype: 'gridpanel',
                                store: 'List',

                                forceFit: true,
                                columns: [
                                            ....
                                       ],

                                dockedItems: [
                                              {
                                                  xtype: 'pagingtoolbar',
                                                  store: 'List',
                                                  dock: 'bottom',                                                     
                                                  displayInfo: true
                                              }

                                            ]
                            }

                    ]
        });



        me.callParent(arguments);
    }

});

どうもありがとう!

4

1 に答える 1

2

あなたがする必要があるautoLoadのはあなたの店で無効にすることです。この方法でストアは初期化されますが、データを取得するためにサービスを呼び出すことはありません。後で、グリッドのハンドラーを呼び出しstore.load()ますafterrender

于 2012-08-28T12:49:46.573 に答える