0

こんばんは。

私のアプリケーションの最初のビューは、ストア (autoLoad = true) からいくつかのデータを取得して、その一部のコンポーネントを変更する必要があります。どの時点でこれを行うことができますか?

意見:

    Ext.define('App.view.EmpresaPanel', {
    extend: 'Ext.Container',
    alias: 'widget.empresapanel',

    config: {
        ui: 'dark',
        layout: {
            type: 'card'
        },
        items: [
            {
                xtype: 'titlebar',
                docked: 'top',
                title: 'Menu',
                layout: {
                    align: 'center',
                    type: 'hbox'
                }
            },
            {
                xtype: 'titlebar',
                docked: 'bottom',
                title: '2012 ©',
                layout: {
                    align: 'center',
                    type: 'hbox'
                }
            }       
        ]
    }

});

店:

Ext.define('App.store.Empresa', {
    extend: 'Ext.data.Store',
    requires: [
        'App.model.Empresa'
    ],

    config: {
        autoLoad: true,
        autoSync: true,
        model: 'App.model.Empresa',
        storeId: 'EmpresaStore',
        proxy: {
            type: 'ajax',
            url: 'http://URL',
            reader: {
                type: 'json',
                rootProperty: 'empresa'
            }
        }
    }
});

コントローラ:

Ext.define('App.controller.Empresa', {
    extend: 'Ext.app.Controller',
    config: {
        refs: {
            empresaPanel: 'empresapanel'
        },

        control: {
            "empresapanel": {
                initialize: 'onContainerInitialize'
            }
        }
    },

    onContainerInitialize: function(component, options) {
        var store = Ext.getStore("EmpresaStore"),
        record = store.findRecord("id", "1");

        console.log(store);
        console.log(record);

    }

});

最初に console.log に表示されます: Ext.apply.create.Class 2 番目に:null

このビューにボタンを配置して同じイベントをタップすると、関数「onContainerInitialize」にある同じコードが実行され、レコードが完成します。

ビューの作成後、ストアからデータにアクセスできる特定の時間はありますか?

ありがとうございました!

4

1 に答える 1

1

ストアからレコードにアクセスするには、ストアロードイベントのリスナーを追加する必要があります。これがあなたがそれをすることができる方法の例です。onContainerInitialize内に次のコードを配置します。

store.on('load', function(t) {
    var record = t.findRecord("id", "1");
    console.log(record);
}, this, {single: true});
于 2013-03-23T19:30:22.203 に答える