0

roomsGroup と呼ばれる (モデル内の) 配列コレクションにバインドされたルーム オブジェクトのリストを取得しました。サーバーからそれぞれのサービスを呼び出して、リストから部屋を追加または削除する機能があります。部屋がなくなるまで、すべてが正常に機能し、リストに最初の部屋を追加しています。次に、正しく追加されても (サーバーから返されるルーム オブジェクトの長さは 1)、UI に表示されません。2 つ目の部屋を追加すると、両方が表示されます。

モデル クラス全体 (シングルトン) が Bindable としてマークされているため、public roomsGroup 変数も自動的に Bindable になります。

「部屋の追加」サービスの結果ハンドラーで、サーバーから返された部屋を確認し、部屋と呼ばれるローカル配列コレクションに配置します。次に、model=rooms に Bound roomsGroup を設定します。

    model.roomsGroup = rooms;
    model.roomsGroup.refresh(); //I tried adding this but it doesn't help.
    model.roomsGroup.filterFunction = null; //Also tried this, but it doesn't help.

パネルでは、list コンポーネントのソースが model.roomsGroup 配列コレクションにバインドされています。

 <myPanel:RoomsComponent id="roomsList" roomSource="{model.roomsGroup}"

もう 1 つ -- myPanel には、キーアップ時に searchContact() という関数が呼び出されるテキスト ボックスがあります。それが行うことの1つはこれです:

 model.roomsGroup.filterFunction = roomFilterFunction;
 model.roomsGroup.refresh();

そのため、サービスを呼び出すと、最初に作成された/唯一の部屋が表示されません。しかし、テキストボックスに何かを入力すると、それが表示されます。つまり、フィルター機能によって表示されます。

バインディングが正しく設定されている場合 (そして、リスト内の項目が 0 から 1 になる場合以外のすべての状況で機能するため)、なぜ機能しないのか疑問に思っています。私の一番の推測は、フィルター機能と関係があるということですが、正確にはわかりません。

どんな助けでも感謝します。

4

1 に答える 1

0

ここで、このコード行を上に移動する必要があります。そうすればmodel.roomsGroup.filterFunction = null;問題は解決します。

model.roomsGroup = rooms;
model.roomsGroup.refresh(); //I tried adding this but it doesn't help.
model.roomsGroup.filterFunction = null; //Also tried this, but it doesn't help.

に変更されたコードのブロック

model.roomsGroup = rooms;
model.roomsGroup.filterFunction = null; //This should be first line.
model.roomsGroup.refresh(); //This should be second line.
于 2013-01-08T05:45:49.657 に答える