2009-01-12 12 views
6

Znaczenie. . . Widziałem przypadki, w których powiązałem komponenty z [Bindable] dataProvider. Kiedy zaktualizowałem dane w dataProvider, komponent nie odzwierciedla natychmiast zmiany. Czy muszę coś zrobić, aby odświeżyć dane? Jakie zdarzenie powoduje, że składnik odświeża swoje dane dataProvider?Co robi znacznik Flex [Bindable]?

Odpowiedz

11

To chyba przesada, ale jeśli jesteś naprawdę zainteresowany tym, co dzieje się pod maską po dodaniu [Bindable] znacznik, gorąco polecam sprawdzić Michaela Labriola za nurkowanie w powiązaniu danych Waters sesji od 360 | Flex !San Jose. Jest to zdecydowanie najbardziej dogłębna prezentacja na ten temat, którą można znaleźć.

Aby go wyświetlić, musisz pobrać Adobe Media Player (która działa w Adobe Air). Jeśli masz problemy z subskrypcją sesji 360 | Flex w programie Adobe Media Player, postępuj zgodnie z poradą Teda Patricka z his blog post.

Jego prezentacja jest również na Slideshare, ale nie jest tak blisko jak informacyjny lub zabawny.

+2

Adobe przerobił teraz sekcję Adobe TV, więc jeśli chcesz uniknąć omijania aplikacji Adobe Media Player, po prostu przejdź do tego linku w sekcji Adobe TV. O wiele łatwiej :) – merlinc

+0

Obecne linki wydają się być martwe/404. Masz pomysł, gdzie mogę znaleźć kopię tego filmu wideo? –

2

które zależą od tego, co zrobiłeś dla danych. czy zastosowałeś filtr, jeśli tak, musisz odświeżyć dane. zrobiłeś sortowanie, jeśli tak, musisz odświeżyć dane. Czy twój dostawca danych to tablica, jeśli tak nie jest, użyj kolekcji ArrayCollection.

Podaj przykład tego, co nie jest aktualizacją i powinniśmy być w stanie udzielić konkretnej pomocy.

1

Jeśli interesuje Cię kompilator z wierszem poleceń, możesz użyć flagi compile.keep-generated-actionscript, aby zobaczyć efekt dodania [Bindable] do właściwości. Tworzenie prostych actionscript klasy o nazwie test i dodać pojedynczy Bindable właściwości String do niego następnie skompilować go tak:

mxmlc -compiler.keep-generated-actionscript test.as

To będzie utworzyć folder o nazwie „generowane” zawierający wszystkie dodatkowe action script, który w tym case byłby pojedynczym plikiem o nazwie (prawdopodobnie) "_test-binding-generated.as".

Powinieneś być w stanie zobaczyć, że dodanie wiążącego znacznika tworzy właśnie opakowanie, które implementuje IEventDispatcher i wywołuje zdarzenie po wywołaniu wywołującego. To opakowanie, którego Twój komponent będzie słuchał.

Jeśli składnik nie odzwierciedla natychmiast zmiany na wyświetlaczu, może to oznaczać, że trzeba będzie przejrzeć kod przerysowania tego składnika. Kontrola drzewa jest dość znana z tego rodzaju problemów, głównie dlatego, że aktualizacja może być kosztowna.

1

"Gdy właściwość jest źródłem wyrażenia wiążącego dane, program Flex automatycznie kopiuje wartość właściwości źródłowej do dowolnej właściwości docelowej po zmianie właściwości źródłowej. Aby zasygnalizować firmie Flex wykonanie kopii, należy użyć opcji [ Bindable] tag metadanych do zarejestrowania właściwości za pomocą Flex, a właściwość source musi wywołać zdarzenie. "

+0

źródło? proszę opublikuj adres URL! – nalply

3

Rozdział 7 poradnika dla programistów dotyczy właśnie tego. Sugeruję, żebyś to przeczytał.

Fragment:

Mimo surowych obiektów danych, takimi jak tablicę łańcuchów lub przedmiotów, są zawinięte w kolekcjach podczas korzystania je jako wartości nieruchomości dataProvider , wykorzystując kolekcje wyraźnie jest lepszą praktyką. Korzystanie z kolekcji jawnie zapewnia synchronizację danych i zapewnia zarówno łatwiejsze, jak i bardziej zaawansowane narzędzia dostępu i manipulowania danymi niż w przypadku korzystania z obiektów surowych bezpośrednio jako dostawców danych. Kolekcje mogą również zapewniać spójny interfejs do uzyskiwania dostępu i zarządzania danymi różnych typów.

Zobacz również this o wiązania danych i tablic