[
https://issues.apache.org/jira/browse/FLEX-35262?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Piotr Zarzycki reassigned FLEX-35262:
-------------------------------------
Assignee: Piotr Zarzycki
> [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)