ExtJS中的getStore()返回undefined

时间:2015-11-13 08:58:50

标签: extjs undefined datastore extjs6

我已经阅读了许多其他相同问题的帖子,但似乎没有人给我解决问题所需的答案。

我已将我的数据存储区定义如下:

javascript/jquery/html

然后我也有了我的主要观点:

var geojson = <?php echo $MapPoly?>;

哪个有控制器:

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'
    }
}
});

在控制器中,当我调用windowOpened函数时,我正在尝试获取数据存储区,因此最终我可以动态地向其添加更多行数据。我可以显示我放在行中的测试数据,但我似乎无法以我尝试的方式连接到数据存储区。任何帮助将被理解为什么它返回undefined以及如何解决它。

我尝试使用

将其添加到我的Application.js文件夹中
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'
            }
        ]
    }
]
});

也没有运气。

感谢。

2 个答案:

答案 0 :(得分:2)

其实我不熟悉extjs 6但是我读了你的代码,我不明白如何将你打开窗口的事件绑定到控制器功能。所以我在小提琴上尝试了你的代码而且它没有用。所以我读了一些关于如何绑定它的文档。这是我修改你的代码,它似乎工作。

fiddle

答案 1 :(得分:0)

您可以在windowOpened中尝试以下内容:

var store = Ext.StoreManager.lookup('tbData');
console.log(store);

var store = this.getViewModel().getStore('tbData');
console.log(store);