Компилятор указан правильно в своем предупреждении.
Компилятор предупреждает вас, что назначения, которые изменяют значение dp
с исходного ArrayCollection
, указанного вами на другое ArrayCollection
, не будут обнаружены.
Однако, если вы оставите значение dp
в покое и измените только его содержимое, ваш <HorizontalList />
продолжит работать.
Это может показаться тривиальным, ноэто важное различие, и оно может привести к некоторым очень запутанным ошибкам в будущем в вашем приложении.
Назначения переменной dp
не будут обнаружены.Однако изменения в ArrayCollection
s list
будут внесены, поскольку они отправляют CollectionChangeEvent
.
, например:
private var dp:ArrayCollection = new ArrayCollection();
private function test():void
{
// Here, we don't change the value of dp directly,
// instead we just modify it's list.
// The DataGroup will show the strings One,Two
dp.addItem("One")
dp.addItem("Two")
// Here, we change the actual value of dp, by assigning a
// new ArrayCollection to it.
// This change would not be detected, and the list would continue to show
// the contents of the previous value.
// Additionally, the label will show the string "Length: 2",
// even though the length is clearly now 3.
dp = new ArrayCollection();
dp.addItem("Tahi");
dp.addItem("Rua");
dp.addItem("Toru");
}
<s:DataGroup dataProvider="{dp}" />
<s:Label text="Length: {dp.length}" />