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 クラスは「未定義」です。

InitSQLite の準備が整うまでストア コードのロードを遅らせるために、クラスが完全にロードされた/オブジェクトがインスタンス化されたときに Sencha Touch で検出できる方法はありますか?

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 に答える