Hej ff,
Jeg får denne fejl: warning: unable to bind to property 'title' on class 'Object' (class is not an IEventDispatcher)
når jeg kører denne kode:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | <?xml version="1.0" encoding="utf-8"?> <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script> <![CDATA[ import mx.collections.ArrayCollection; [Bindable] private var dp:ArrayCollection; public function set dataProvider(dataProvider:ArrayCollection):void{ dp = dataProvider; buildList(); } private function buildList():void { var yPos:uint = 0; for (var index:uint = 0; index < dp.length; index++) { var album:albumRenderer = new albumRenderer; album.data = dp <ol> </ol> <p>; //Problemer er vidst her. album.height = 32; album.width = 200; album.y = yPos; yPos += 32; this.addChild(album); } } ]]> </mx:Script> </mx:Canvas> |
albumRenderer.mxml:
1 2 3 4 | <?xml version="1.0" encoding="utf-8"?> <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Label text="{data.title}"/> </mx:Canvas> |
Nogle der ved hvad jeg gør galt? ![]()
3 kommentarer
Kunne forestille mig at det er fordi at dp er et arrayCollection, og kan i princippet indeholde hvad som helst og giver derfor et Object tilbage. Da Object ikke overholder IEventDispatcher interfacet, hvilket det åbenbart skal for at du kan binde det med Bindable.
Det ville sikkert kunne gøres hvis man kunne datatype et array, hvilket var en af de ting som var med i ECMAScript 4.0, da man derved kunne vide hvad man fik tilbage fra et array andet end typen Object. Men løsningen på problemet er jeg ikke lige kommet på endnu..
Jeg er med på en lytter..
Præcis hvad indeholder dit dp?
Er det bare native objekter eller dine egne custom?
Hvis det er custom objekter så prøv at smække [Bindable] på før class def. ala
[Bindable]
public class DinCustomClass
{
public var id:uint;
public var title:String;
}
Iøvrigt kender man jo som regel sine egne objekttype i sin ArrayCollection med mindre man polymorfer og så kan man jo typecaste, hvor der er behov for det.
Problem løst, jeg havde glemt at sætte at typecaste et objekt i min albumRenderer