Well, there isn't any dataChange property being dispatched, but the
ItemRendererDataBinding may need to be upgraded to handle doing that.

FWIW, I would probably not override data and just do:

[Bindable("dataChange")]
bublic function get product():ProductVO
{
    return data as ProductVO;
}

-Alex

On 12/9/16, 10:50 AM, "carlos.rov...@gmail.com on behalf of Carlos Rovira"
<carlos.rov...@gmail.com on behalf of carlos.rov...@codeoscopic.com> wrote:

>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.

Reply via email to