0

この同じ質問で他の多くの投稿を読みましたが、問題を解決するために必要な答えが得られないようです。

以下のようにデータストアを定義しました。

Ext.define('TestApp.store.tbData', {
extend: 'Ext.data.Store',

alias: 'store.tbData',
storeId: 'tbData',


fields: [
    'name', 'number', 'key', 'priority'
],

data: {
    items: [
        {name: 'a', number: 'b', key: 'c', priority: 'd'}
    ]
},

proxy: {
    type: 'memory',
    reader: {
        type: 'json',
        rootProperty: 'items'
    }
}
});

次に、メイン ビューもあります。

Ext.define('TestApp.Templates.tbTemplate', {
extend: 'Ext.window.Window',
alias: 'tbTemplate',
itemId: 'tbWindow',

viewModel: {
    type: 'test'
},

requires: [
     'TestApp.Controllers.tbController',
     'TestApp.store.tbData',
     'TestApp.Controllers.dateTimeController'
],

controller: 'tbTemplate',

autoShow: true,
height: 600,
width: 600,
constrainHeader: true,
title: 'tb',

items: [
    {
        xtype: 'gridpanel',
        store: {
            type: 'tbData'
        },

        columns: [
            {
                xtype: 'gridcolumn',
                dataIndex: 'name',
                text: 'Name'
            },
            {
                xtype: 'gridcolumn',
                dataIndex: 'number',
                text: 'Number'
            },
            {
                xtype: 'gridcolumn',
                dataIndex: 'key',
                text: 'Key'
            },
            {
                xtype: 'gridcolumn',
                dataIndex: 'priority',
                text: 'Priority'
            }
        ]
    }
]
});

コントローラを持っています:

Ext.define('TestApp.Controllers.tbController', {
extend: 'Ext.app.ViewController',
singleton: true,

alias: 'controller.tbTemplate',

config:{stores: ['tbData'],},

requires: [
     'TestApp.store.tbData'
],

windowOpened: function () {
    console.log(Ext.getStore('tbData'));
}
});

コントローラーでは、windowOpened 関数を呼び出すと、データストアを取得しようとしているので、最終的にデータの行をさらに動的に追加できます。行に入れたテストデータを表示できますが、試した方法でデータストアに接続できないようです。undefined が返される理由とそれに取り組む方法について、助けをいただければ幸いです。

を使用して Application.js フォルダーに追加しようとしました

stores: ['TestApp.store.tbData']

運もありません。

ありがとう。

4

2 に答える 2

3

実際、私はextjs 6に精通していませんが、コードを読んで、ウィンドウを開いたイベントをコントローラー関数にバインドする方法がわかりません。だから私はフィドルであなたのコードを試しましたが、うまくいきませんでした。だから私はそれをバインドする方法について少しドキュメントを読みました。これはあなたのコードに対する私の変更であり、うまくいくようです。

フィドル

于 2015-11-13T13:14:07.527 に答える