0

私はこのプロジェクトに参加しています(他の社会が私たちに引き渡す前に作成した完全な手続き型の非常に臭いコードを備えた恐ろしいプロジェクトです)。

ネイティブの Android モジュールである Carousel があります。カルーセルの各要素をクリックすると、対応するアクションがトリガーされます。

論理的には、Titanium のインスタンス化されたモジュールに addEventListener を追加しただけで、アプリケーションを初めて起動したときに完全に機能します。しかし、アプリケーションを終了して再起動すると、エラーが発生しますObject [Object Carousel] has no method addEventListener

理由がわかりません。最初に機能する場合は、2 回目に機能するはずです。うまくいかないある種のメモ化はありますか?それともガベージコレクションの失敗?このロジックを処理するために Titanium で使用したコードは次のとおりです。

function some_func() {
  CF_container = null;
  var my_module = require('com.xxxx.carousel');
  CF_container = my_module.createView();
  CF_container.addEventListener('IZ_itemClicked', function(data) {
    evts_CF_click(data.id);
  });
  return CF_container;
}
4

1 に答える 1

1

問題はそのコードにあるとは思えません。各行の最後にセミコロンを付けずにコードを書いたときに、同様の問題に遭遇しました。モジュールをロードしてからエラーが発生し始めるまで、すべて正常に動作しているように見えますが、たまにしかありません。Titanium Studio (Preferences > Titanium Studio > Validation > JavaScript - JSLint と Android UTF-8 Verifier によるすべて) で JavaScript 検証を有効にし、すべての js ファイルのすべてのエラーを修正しました。どこでも正しい構文を取得できれば、問題は解消されると思います。

于 2012-07-17T20:08:54.080 に答える