mx:itemRendererとmx:itemEditorをインラインで書いて、"data"プロパティの役割とか更新タイミングとか探っているんだけど、なかなか見えてこない。
Listコンポーネントにインラインで書いて、標準レンダラーとエディタをシミュレートしてみてる。
エディターの方はなんとかなっているんだけど、レンダラーの方がだめ。
override public function set data(value:Object):void{
dataセッターでレンダラーの描画時にdataが更新されたら反応するようにしているんだけど、最初の描画のときしか反応しない。
自分の考えとしては
data->エディタへ描画->編集->セル->data->レンダラ描画
という流れを考えていたんだけど・・・?
labelをtext="{data.name}"とdata内のプロパティと結びつけてやると、上記の流れになってるかわからないけれどリアルタイムで更新される。
もちろん、バインドできんと警告でるけど。
レンダラとエディタは別コンポーネントにしているから当然dataも別になっているから、レンダラのdataが更新されないと表示も更新されないよね?
だとなんでdataセッターが反応しないのか??
今の段階では、エディタを透明にしたらレンダラの上に重なっているのがわかったので、レンダラはつど作成されるものではなくてバインドで更新しているものじゃないかと思ってきた。creationCompleteを登録しても反応しないし。
ならどこのdataを見てるのか??
thisが違うのか??
もうちっと解析しないと。
これソース。
実験用にいろいろ付いてて見にくいですが。
Listコンポーネントにインラインで書いて、標準レンダラーとエディタをシミュレートしてみてる。
エディターの方はなんとかなっているんだけど、レンダラーの方がだめ。
override public function set data(value:Object):void{
dataセッターでレンダラーの描画時にdataが更新されたら反応するようにしているんだけど、最初の描画のときしか反応しない。
自分の考えとしては
data->エディタへ描画->編集->セル->data->レンダラ描画
という流れを考えていたんだけど・・・?
labelをtext="{data.name}"とdata内のプロパティと結びつけてやると、上記の流れになってるかわからないけれどリアルタイムで更新される。
もちろん、バインドできんと警告でるけど。
レンダラとエディタは別コンポーネントにしているから当然dataも別になっているから、レンダラのdataが更新されないと表示も更新されないよね?
だとなんでdataセッターが反応しないのか??
今の段階では、エディタを透明にしたらレンダラの上に重なっているのがわかったので、レンダラはつど作成されるものではなくてバインドで更新しているものじゃないかと思ってきた。creationCompleteを登録しても反応しないし。
ならどこのdataを見てるのか??
thisが違うのか??
もうちっと解析しないと。
これソース。
実験用にいろいろ付いてて見にくいですが。