IT坊主でいこう!

坊主をしながらITのことに詳しくなりたい!
iphoneアプリ、Webアプリ等頑張る!

違うコンテキスト間での関数や値のやり取り[Mac]

2012年06月06日 13時20分06秒 | Titanium
Titaniumで始めるモバイルアプリ作成の基礎知識 - Smart & Social

この記事によると
コンテキスト(Javascriptファイル)という1つのスコープの範囲内で変数やメソッド、イベントを扱える。
これを別のコンテキストをやり取りする場合

・Titanium.include()でファイルをインクルードする
で、そのファイルの変数やメソッドを参照できるようになる。
ただこれだと名前空間が混ぜ混ぜで危ないのではないか。

調べたらrequire()も使えるとのことなので

var Inc_hello = require("sample/hello_world.js");
Inc_hello.HelloWorld();

みたいに書いた方がいいのではないだろうか、もしくはそもそもコンテキストを分けるか。

requireでTitaniumのインクルードパスの問題を解決する - ひげろぐ
ただここによるとAndroidが実機だとrequire()したときに値が取れてない場合があるらしい、とか
色々書かれていてほんとに実用的なのかわからない。
最終更新では、Appceleratorの開発者ブログでCommonJSライクで書いているとのことなので使っていいのかな。

とりあえず、自分で作るときはこのスタイルで一度作ってみよう。

話がずれたけど
Eventを別のコンテキストに投げたい場合はfireEvent()を使えばいいらしい。
image_view_animated.jsでも
Titanium.App.fireEvent('show_indicator');
として、app.jsに書かれたロード表示を呼び出してた。

なるほど、動作を共通部分で実装しといてこれでイベント投げると。

少し意味合いが変わるけど
Titanium.App.setProperties
を使えば、アプリレベルで値を保持できる。
アプリを終了時に外部に保存、起動時に再度ロードと書かれているところを見ると
ここにログイン情報等を配置しておくのかな。
どこかに明確に書いている記事ないかなー。


最新の画像もっと見る