我正在使用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!');
}
});
答案 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/