0

我有一个使用shepsii 的 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 准备好?

4

1 回答 1

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);
于 2012-11-19T18:26:14.403 回答