1

Flex SDK 3.5 を使用しています。私はmodel.asを持っており、その中にBindableであるArrayCollection(arr_modという名前)があります。私の mxml から、3 つの場所でこの arr_mod にリンクします:
1) DataGrid で dataprovider={arr_mode} を設定します ...
2) Button で、次のように arr_mod に新しい項目を追加します: mx:Button .. click = "{arr_mod .addItem(新しいアイテム)}"


3) textBox に mx:TextBox text="{mySpecialCounterFunc(arr_mod)}" を追加したい mxml arr_mod のスクリプトでは Bindable であり、model.as のクラス定義にもあることに注意してください。

問題は、ボタンをクリックしたときに mySpecialCounterFunc が呼び出されないことです! {} を使用し、これは arr_mod の変更をリッスンする必要があるため、呼び出す必要があります (ボタンで行われた変更により、新しいアイテムが追加され、リスナーが応答するよりも)。
DataGridが正しく更新されている間!
ちなみに、arr_mod を単純な String または Int に変更すると動作します。つまり、mySpecialCounterFunc が呼び出されるのは
なぜですか??

4

1 に答える 1

1

私は時々、ArrayCollection への奇妙な振る舞いを経験したことを知っています。何かがうまくいかないときは、通常、MXML バインディングを使用するのではなく、CollectionEvent.COLLECTION_CHANGE の直接イベント リスナーを配置し、そのイベント ハンドラーでやりたいことを行うことに切り替えます。いずれにせよ、MXML バインディングはこのための構文糖衣に過ぎないと思います。

于 2010-05-23T21:42:44.683 に答える