LoginSignup
2
1

More than 5 years have passed since last update.

Titaniumを触り始めて

Last updated at Posted at 2013-12-12

Titanium初学者のメモです。

Titanium Mobileを触り始めました。Titanium歴3日です。
存在を知ってから数年経ちましたが、その間にいろいろ変化があったらしく。
今はAlloyというMVCフレームワークを使用するのが好いということでした。

キホンのキもない状態でいきなりAlloyから始めるのもどうかと思ったりもしましたが。
プロジェクトの新規作成をして生成されるファイル群の中で、なんだか一番わかりやすい気がしたのでした。
(もとはHTML5+CSS+JavaScriptでやろうと思っていましたが、いまいちシックり来ず。)

ハマった点

Labelを勘違いしていました。
HTMLでいうpみたいなものかと思って。ちゃんとドキュメントを読めばわかるのに。
なので、Labelの中にImageViewを入れちゃって、画像が表示されずにハマりました。もー。

一番ハマった点

requireされたJS(モジュール?)側から、requireした側のViewの操作ができなかった。
すごく悩んだ末、できないということが分かりました。

Namespaceをいじれば何とかなるのでしょうが、あまりそれはしたくなかったのです。というか、それならincludeしたほうがいいような気がします。非推奨ですが。

HTTP通信をして、そのコールバックでDOM操作したい、みたいな場合はどうするんでしょう?
そういう処理が複数ある場合、全部元のControllerに書いたら、1枚のJSが異常に長くなるような気がするんですが。。。

というわけで、ひとまず1枚のJSに、1つのController分の処理はすべて書いてやり過ごしています。

おもったこと

Titanium.Network.createHTTPClientを使う際に、onloadの設定を流れの中でやると非常に見通しが悪くなるので、functionを外に出しました。
最初は全部外に出して、sendだけ流れの中に置きましたが、そうすると何回も同じ処理を繰り返すごとにPOSTするデータが文字列連結されていく、、、おかしい。
なので、onloadで使用するfunctionのみを外に出して、他は(var xhr = Titanium.Network.createHTTPClient();も)流れの中に置きました。xhrが初期化されるからか、解決しました。
でも、onloadも流れの中に置いて、

    xhr.onload = function(){
        //処理
    };

のほうが取り回しは良いのかな、と思ったりもしました。引数とか関係で。

わかったこと

DOMに仕込んだイベントが発火した場合、関数に渡される引数に、そのDOMの情報が入っているっぽい。

index.xml
<Alloy>
    <Window class="container">
        <View id="nantara">
            <ImageView id="eventbtn" image="/images/nantoka.gif" onClick="btnclick" value="1">
        </View>
    </Window>
</Alloy>
index.js
dunction btnclick (e){
    alert( e.source );          //ImageViewオブジェクト
    alert( e.source.value );    //1が表示される
}

$.eventbtnみたいに指定する場合と違って、こちらの方法の場合はrequireされた側のモジュールでも扱えました。
このこともあって、前項で書いたように、xhr.onloadの中身のfunctionも流れの中に書いたほうがいいのかな、と思いました。試していませんが。

明日以降の課題

  • アプリ内で、SQLiteにデータを格納したり取り出したりしてみる
  • アプリの操作でJSファイルの内容を書き換えられるのか調べる(ID・パスワード等はSQLiteに保存しないほうがいいというのをどこかで読んだので)

まだまだ勘違いもありそうですし、知らないことだらけなので、ガツガツ勉強します。
Perlのリファレンスみたいに、オブジェクトを参照渡しできればいいのに、と思いました。
でも、それできちゃうと混沌として、「設定より規定」が崩れるからダメなのでしょうか。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1