Sencha Touch:如何确定何时加载了一个类

时间:2012-11-18 14:49:15

标签: android sencha-touch

我有一个使用shepsii's sqlite proxy的Sencha Touch 2应用。当应用加载时,我会在Chrome控制台中看到与此类似的几个错误:

Uncaught TypeError: Cannot call method 'getConnection' of undefined at file:///android_asset/www/app/store/OptionsOfflineStore.js:14

我的每个商店都会发生此错误。每个商店的代理定义如下:

proxy: {
    type: 'sqlitestorage',
    dbConfig: {
        tablename: 'user',
        dbConn: Utils.InitSQLite.getConnection()
    }
}

并且以'dbConn'开头的行是违规行。尽管Chrome中存在这些错误,并且在Android设备上从eclipse进行调试时该应用运行正常。但是,当我导出已签名的应用程序包并将其安装在设备上时,它会在加载屏幕上挂起。我看不到任何其他错误,所以我假设这些与商店相关的错误阻止了应用程序的加载。

我猜错误发生的原因是utils / InitSQLite中定义的类在应用程序继续运行并尝试运行商店代码之前未完全加载,因此InitSQLite类是“未定义的”。

当一个类完全加载/实例化一个对象时,有什么方法可以在Sencha Touch中检测到,这样我就可以延迟加载存储代码,直到InitSQLite准备好了吗?

1 个答案:

答案 0 :(得分:0)

在商店配置autoLoad:false中定义,不要在代理中设置dbConn,然后:

Ext.myInterval = setInterval(function(){
  try{
    if(Utils && Utils.InitSQLite && Utils.InitSQLite.getConnection){
      Ext.apply(store.getProxy(),{
        dbConn: Utils.InitSQLite.getConnection()
      });
      store.reload();
      clearInterval(Ext.myInterval);
    }
  catch(ex){}
},300);