Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   загрузка в dataProvider (http://www.flasher.ru/forum/showthread.php?t=102793)

quazare 22.10.2007 22:12

загрузка в dataProvider
 
Народ, подскажите как правильно работать с dataProvider в <mx:List>

проблема такая:

1.я создал глобальный массив myData
2.записал туда некую информацию вот так myData[i]="тест 1" и т.д.

3.затем пытаюсь ее выводить вот так <mx:List dataProvider ="{myData}" ...>

4.Ничего не выводиться и пишется, такая вещь как замечание:

Код:

data binding will not be able to detect assignments to "myData"

Как быть? Большое спасибо!!

baron27 23.10.2007 00:03

поставь [Bindable] перед определением твоего массива и вообще лучше используй ArrayCollection
Код:

[Bindable] private var myData:ArrayCollection;

__i 23.10.2007 13:20

Цитата:

Сообщение от baron27
поставь [Bindable] перед определением твоего массива и вообще лучше используй ArrayCollection
Код:

[Bindable] private var myData:ArrayCollection;

Вообще не используй массив, а используй ArrayCollection, [Bindable] перед массивом никак не решит эту проблему )

NikR 23.10.2007 16:45

Вообщето [Bindable] преобразует Array в ArrayCollection, поэтому эквивалентно:
Код:

private var myData:ArrayCollection;
[Bindable] private var myData:Array;


__i 23.10.2007 18:01

никто никого никуда не преобразует!
Код:

[Bindable]
public var myData:Array;

никак не преобразует этот массив в ArrayCollection, это действие просто говорит, что нужно генерить событие если мы изменили myData (именно поменяли сам myData на другой массив, а не изменили соедржимое myData)

Код:

myData = [1,2,3,4];
.....
myData.push(5) //биндингу пофиг
myData = [1,2,3,4,5]; //тут биндинг отработал, т.к. занчение изменилось

теперь далее, когда мы устанавливает в кому-то датапровайдер в виде массива, то внутри идет преобразование этого массива в ArrayCollection, но есть одно но

Код:

myData = [1,2,3,4];
.....
list.dataProvider = myData;
myData.push(5) // тут твоему листу пофигу ибо он незнает что что-то произашло (см. код выше почему).

если сделать
Код:

list.dataProvider = myData;
ArrayCollection(list.dataProvider).addItem(5);

то у нас лист обновится.

Вобщем я клоню к тому что юзайте детки всегда ArrayCollection вместо Array с таких случаях и будет вам счастье!.

quazare 23.10.2007 21:43

спасиб!

Nirth 24.10.2007 01:29

Цитата:

Вообщето [Bindable] преобразует Array в ArrayCollection, поэтому эквивалентно:
Мета тэг Bindable не занимается преобразованием, в случае со свойствами он просто создает get/set аксессоры, которые диспатчат событие обновления свойства.


Часовой пояс GMT +4, время: 21:34.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.