Hi Alex, I get to work as you said, but trying to make a bindable var to reduce verbosity like this:
<mdl:ListItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:js="library://ns.apache.org/flexjs/basic" xmlns:mdl="library://ns.apache.org/flexjs/mdl" xmlns="http://www.w3.org/1999/xhtml"> <fx:Script> <![CDATA[ import vos.ProductVO; [Bindable] public var product:ProductVO; [Bindable("dataChange")] override public function set data(value:Object):void { if (value != data) { super.data = value; product = data as ProductVO; // I tried as well with ProductVO(data) } } ]]> </fx:Script> <js:beads> <js:ItemRendererDataBinding /> </js:beads> <js:Span text="{product.label}"/> </mdl:ListItemRenderer> makes product.label doesn't output nothing, do you know what can be happen? Thanks 2016-12-09 17:48 GMT+01:00 Alex Harui <aha...@adobe.com>: > Well, that is a legitimate warning, but is innocuous. I'm tempted to try > to figure out how to tell Maven to accept these warnings, but I don't know > how to do that. That's why the Ant builds work. Or get the compiler to > suppress the warning. > > The other answer is to switch to ValueObjects if you are just using plain > Object. Then your binding expression would look like > "{MyValueObject(data).label}. MyValueObject would have to have the > appropriate [Bindable] metadata. > > -Alex > > On 12/9/16, 8:39 AM, "carlos.rov...@gmail.com on behalf of Carlos Rovira" > <carlos.rov...@gmail.com on behalf of carlos.rov...@codeoscopic.com> > wrote: > > >Hi Alex, > > > >just updated all commits and test your ItemRenderer and is not working, do > >you know what could be? > > > >The project 'App' has been successfully compiled and optimized. > >/Users/carlosrovira/Dev/Flex/source/flexjs/flex-asjs/ > examples/flexjs/MDLEx > >ample/src/main/flex/itemRenderers/CustomListItemRenderer.mxml(28): > >col: 12 Data binding will not be able to detect assignments to 'label'. > >text="{data.label}" > > > ^ > >[INFO] > >------------------------------------------------------------------------ > >[INFO] BUILD FAILURE > > > > > >2016-12-09 16:25 GMT+01:00 Alex Harui <aha...@adobe.com>: > > > >> > >> > >> On 12/9/16, 5:35 AM, "carlos.rov...@gmail.com on behalf of Carlos > >>Rovira" > >> <carlos.rov...@gmail.com on behalf of carlosrov...@apache.org> wrote: > >> > >> >Hi > >> > > >> >I need to know how to deal with data binding in different situations, > >> >ItemRenderer, View, Container, Component, Bead,... > >> > > >> >I saw various classes ConstantBinding, ViewBeadBinding... > >> > > >> >Hope someone could share the main principles of Binding in FlexJS > >> > >> Binding in the regular Flex SDK is extremely wasteful. That's why we > >> often see folks recommend that you start taking out data bindings when > >>you > >> have performance issues. Flex Mobile default item renderers are written > >> in AS instead of MXML for that reason. Binding in general has to > >> "highly-sensitive". It needs to look for all kinds of possible change > >> conditions, such as the source or destination being changed as well as > >>the > >> property on the source being changed. In the regular Flex SDK, this > >> highly-sensitive detection mechanism is used everywhere you use binding > >> expressions. > >> > >> in FlexJS, we want to have different implementations based on certain > >> scenarios. There are classes named XXXDataBinding (vs YYYBinding) that > >> implement a change detection mechanism specific to that scenario. So > >> ViewDataBinding knows that most data bindings will probably be from the > >> applicationModel property to various controls. The various > >>XXXDataBinding > >> implementations use the YYYBinding classes like ConstantBinding and > >> SimpleBinding to optimize for certain patterns that don't require as > >>much > >> overhead to set up. There is a GenericBinding for everything else. > >>Also, > >> having a choice of YYYBinding classes allows the developer to not use {} > >> expressions and simply add a YYYBindingClass as a bead and get binding > >>to > >> work without the overhead of the compiler setting up a data structure > >>for > >> the XXXDataBindingClass to interpret at instantiation time. So, this is > >> another example of PAYG. You can be lazy and have the compiler and > >> framework figure out what to do with a {} expression, or you can save > >>code > >> by manually implementing it, or you can save even more by writing AS to > >> addEventListener for the right thing at the right time. > >> > >> Anyway, you mentioned ItemRenderer above, and I found out yesterday that > >> ItemRenderer binding needed its own implementation. It can take > >>advantage > >> of knowing that if you bind to data.something, that there is no need to > >> set change detection for the source or destination objects. It knows > >>that > >> the only trigger is when in the item renderer lifecycle, the data > >>property > >> is set. I just pushed that change. Now my renderer looks like: > >> > >> <js:MXMLItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" > >> xmlns:js="library://ns.apache.org/flexjs/basic" > >> width="100%"> > >> <js:beads> > >> <js:VerticalLayout /> > >> <js:ItemRendererDataBinding /> > >> </js:beads> > >> <js:Label width="100%" height="30" style="fontWeight:bold" > >> text="{data.qname}" > > >> </js:Label> > >> <js:MultilineLabel id="description" width="100%" > >> text="{data.description}" /> > >> </js:MXMLItemRenderer> > >> > >> > >> > >> HTH, > >> -Alex > >> > >> > > > > > >-- > > > >Carlos Rovira > >Director General > >M: +34 607 22 60 05 > >http://www.codeoscopic.com > >http://www.avant2.es > > > >Este mensaje se dirige exclusivamente a su destinatario y puede contener > >información privilegiada o confidencial. Si ha recibido este mensaje por > >error, le rogamos que nos lo comunique inmediatamente por esta misma vía y > >proceda a su destrucción. > > > >De la vigente Ley Orgánica de Protección de Datos (15/1999), le > >comunicamos > >que sus datos forman parte de un fichero cuyo responsable es CODEOSCOPIC > >S.A. La finalidad de dicho tratamiento es facilitar la prestación del > >servicio o información solicitados, teniendo usted derecho de acceso, > >rectificación, cancelación y oposición de sus datos dirigiéndose a > >nuestras > >oficinas c/ Paseo de la Habana 9-11, 28036, Madrid con la documentación > >necesaria. > > -- Carlos Rovira Director General M: +34 607 22 60 05 http://www.codeoscopic.com http://www.avant2.es Este mensaje se dirige exclusivamente a su destinatario y puede contener información privilegiada o confidencial. Si ha recibido este mensaje por error, le rogamos que nos lo comunique inmediatamente por esta misma vía y proceda a su destrucción. De la vigente Ley Orgánica de Protección de Datos (15/1999), le comunicamos que sus datos forman parte de un fichero cuyo responsable es CODEOSCOPIC S.A. La finalidad de dicho tratamiento es facilitar la prestación del servicio o información solicitados, teniendo usted derecho de acceso, rectificación, cancelación y oposición de sus datos dirigiéndose a nuestras oficinas c/ Paseo de la Habana 9-11, 28036, Madrid con la documentación necesaria.