无法在Sencha Controller中获取Store

时间:2013-12-02 23:04:47

标签: sencha-touch

我正在使用Sencha Touch 2.3。我试图以与本文http://www.sencha.com/learn/architecting-your-app-in-ext-js-4-part-3/中定义的方式类似的方式在控制器中获取Store实例。

我在Controller配置中定义了“位置”存储。然后我尝试使用两种失败的方法来获取商店。首先通过Ext.getStore,第二个通过getLocationStore,它应该是一个自动生成的函数。两者都失败了第一个调用返回undefined,第二个调用抛出异常,因为该函数不可用。

Ext.define('MyApp.controller.Location', {
extend: 'Ext.app.Controller',

config: {
    refs: {
        locationSearchField: '#locationSearchField'
    },

    control: {
        locationSearchField: {
            action: 'onSearchAction'
        }
    },

    stores: [ 'Location' ]

},

onSearchAction: function() {
    var locationSearchStore = Ext.getStore('Location');
    if (locationSearchStore == undefined) {
        Ext.Logger.warn('Could not locate locationSearchStore');
        locationSearchStore = this.getLocationStore();
        if (locationSearchStore == undefined)
            Ext.Logger.warn('Could not location locationSearchStore again!');
        else
            Ext.Logger.info('Success!');
    }   
    else
        Ext.Logger.info('Success!');

}

});

2 个答案:

答案 0 :(得分:1)

您可以通过以下方式获取商店:Ext.data.StoreManager.lookup('Location')(如果它被称为MyApp.store.Location)。

可以肯定的是,您处于onSearchAction的正确上下文中,尝试调用console.dir(this);并检查this是否为控制器对象本身

答案 1 :(得分:0)

首先,您想要在sencha touch中访问商店,但是您已经给出了extjs的链接。其次,您需要先定义商店,然后将其添加到app.js文件中。然后,您可以通过Ext.getStore('Location')方法访问您的商店。作为参考,您应该学习http://miamicoder.com/2012/sencha-touch-2-stores-adding-removing-and-finding-records/