Flexのバインディングについて、ソースを追っていて明らかに値の同期以外の目的で使っているところがあるけどなんの目的でバインディング宣言をしているのか分かっていなかった。
疑問に思って調べてみると、MXMLファイル内のMXMLタグ領域からScriptタグ内AS領域の変数を参照するときに必要だということ。
以下のようなとき。
<mx:Script>
[Bindable]
var var_str:String = "bbccdd";
</mx:Script>
<mx:Text text="{var_str}">
上記の例がわかりやすいんだけど、属性textへの代入なので中括弧を取ると文字列と扱われてしまってそのまま"var_str"が出力されてしまう。文字列ではなく変数として扱いたい。そこで中括弧{}に入れる。
つまりは「変数として使用したいときに{}で囲う」ということだな。
PHPの文字列の扱いと同じだね。
これは代入先がdataProviderでもなんでも同じことになる。
ちなみに、ListのdataProviderへオブジェクトの配列を中括弧無しで渡したら、「オブジェクト内のプロパティが見つからない」というランタイムエラーが出た。
変数の上にある[Bindable]宣言を外すと、警告は出るが実行はされて変数値の参照は問題なく行われる。
試していないけどたぶん値同期はできないんじゃないかと思われる。
「[Bindable]宣言と{}はつがいで使用する」と決めておけばいいんじゃないかと。
こういった大切なことがなぜかどこにも書いてない。
バインディング=値同期のことばかり。
公式リファレンスのどこかで見かけたけど、一言だったし書いてあった場所を忘れるようなところに書いてあったのでどこかは不明。
アメーバもいいかげん、コードを記述しやすいようにしてくれないかな。
余計な機能ばっかり入れて、肝心な文章の記述については基本も抑えられていない。
疑問に思って調べてみると、MXMLファイル内のMXMLタグ領域からScriptタグ内AS領域の変数を参照するときに必要だということ。
以下のようなとき。
<mx:Script>
[Bindable]
var var_str:String = "bbccdd";
</mx:Script>
<mx:Text text="{var_str}">
上記の例がわかりやすいんだけど、属性textへの代入なので中括弧を取ると文字列と扱われてしまってそのまま"var_str"が出力されてしまう。文字列ではなく変数として扱いたい。そこで中括弧{}に入れる。
つまりは「変数として使用したいときに{}で囲う」ということだな。
PHPの文字列の扱いと同じだね。
これは代入先がdataProviderでもなんでも同じことになる。
ちなみに、ListのdataProviderへオブジェクトの配列を中括弧無しで渡したら、「オブジェクト内のプロパティが見つからない」というランタイムエラーが出た。
変数の上にある[Bindable]宣言を外すと、警告は出るが実行はされて変数値の参照は問題なく行われる。
試していないけどたぶん値同期はできないんじゃないかと思われる。
「[Bindable]宣言と{}はつがいで使用する」と決めておけばいいんじゃないかと。
こういった大切なことがなぜかどこにも書いてない。
バインディング=値同期のことばかり。
公式リファレンスのどこかで見かけたけど、一言だったし書いてあった場所を忘れるようなところに書いてあったのでどこかは不明。
アメーバもいいかげん、コードを記述しやすいようにしてくれないかな。
余計な機能ばっかり入れて、肝心な文章の記述については基本も抑えられていない。