flex-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alex Harui (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (FLEX-35262) [FlexJS] Uncaught exception with binding component property which is a setter
Date Sun, 19 Mar 2017 04:53:41 GMT

    [ https://issues.apache.org/jira/browse/FLEX-35262?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15931570#comment-15931570
] 

Alex Harui commented on FLEX-35262:
-----------------------------------

I didn't dig into it yet.  Other folks are welcome to do the investigation.   One other thing
to check is what the regular Flex SDK would do if you called a setter too early.

> [FlexJS] Uncaught exception with binding component property which is a setter
> -----------------------------------------------------------------------------
>
>                 Key: FLEX-35262
>                 URL: https://issues.apache.org/jira/browse/FLEX-35262
>             Project: Apache Flex
>          Issue Type: Bug
>          Components: FlexJS
>    Affects Versions: Apache FlexJS 0.8.0
>            Reporter: Justin Mclean
>            Assignee: Piotr Zarzycki
>
> This code:
> {code}
> <?xml version="1.0" encoding="utf-8"?>
> <js:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
>               xmlns:js="library://ns.apache.org/flexjs/basic"
>               xmlns:comp="components.*">
>   <js:valuesImpl>
>       <js:SimpleCSSValuesImpl/>
>   </js:valuesImpl>
>   <js:initialView>
>       <js:View id="base" percentWidth="100" percentHeight="100">
>            <comp:Box no="3" colour="red" />
>       </js:View>
>   </js:initialView>
> </js:Application>
> {code}
> And this component:
> {code}
> <?xml version="1.0"?>
> <js:Container xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:js="library://ns.apache.org/flexjs/basic">
>   <js:beads>
>     <js:ContainerDataBinding />
>   </js:beads>
>   <fx:Script><![CDATA[
>       protected var _colour:String;
>       [Bindable]
>       public var no:int;
>       [Bindable]
>       public function set colour(colour:String):void {
>           bigBox.style = "background-color:" + colour + ";text-align:center;";
>       }
>       [Bindable]
>       public function get colour():String {
>           return _colour;
>       }
>       ]]></fx:Script>
>       <js:Container id="bigBox" height="32" width="32" style="background-color:#E3E3E3;text-align:center;">
>           <js:Label text="{no}" style="line-height:32px;font-size:150%:font-weight:bold"
/>
>       </js:Container>
> </js:Container>
> {code}
> Gives an exception when run.
> {code}
> Box.js:88 Uncaught TypeError: Cannot set property 'style' of undefined
>   at components.Box.__bindingWrappedSetter__colour (Box.js:88)
>   at components.Box.bindable__set__colour (Box.js:124)
>   at components.Box.set__colour (Box.js:135)
>   at Function.org.apache.flex.utils.MXMLDataInterpreter.initializeStrandBasedObject (MXMLDataInterpreter.js:158)
>   at Function.org.apache.flex.utils.MXMLDataInterpreter.generateMXMLArray (MXMLDataInterpreter.js:95)
>   at Function.org.apache.flex.utils.MXMLDataInterpreter.generateMXMLInstances (MXMLDataInterpreter.js:218)
>   at org.apache.flex.core.View.org.apache.flex.core.ContainerBase.addedToParent (ContainerBase.js:149)
>   at Main.org.apache.flex.core.Application.addElement (Application.js:116)
>   at Main.org.apache.flex.core.Application.initialize (Application.js:55)
>   at Main.org.apache.flex.core.Application.start (Application.js:212)
> components.Box.__bindingWrappedSetter__colour @ Box.js:88
> components.Box.bindable__set__colour @ Box.js:124
> components.Box.set__colour @ Box.js:135
> org.apache.flex.utils.MXMLDataInterpreter.initializeStrandBasedObject @ MXMLDataInterpreter.js:158
> org.apache.flex.utils.MXMLDataInterpreter.generateMXMLArray @ MXMLDataInterpreter.js:95
> org.apache.flex.utils.MXMLDataInterpreter.generateMXMLInstances @ MXMLDataInterpreter.js:218
> org.apache.flex.core.ContainerBase.addedToParent @ ContainerBase.js:149
> org.apache.flex.core.Application.addElement @ Application.js:116
> org.apache.flex.core.Application.initialize @ Application.js:55
> org.apache.flex.core.Application.start @ Application.js:212
> (anonymous) @ index.html:108
> {code}
> Looks the setter is being called before bigBox exists. I can see that this.numElements
is 0 inside the colour method.
> Alex suggested that a try/catch should be added to the generated code.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Mime
View raw message