You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flex.apache.org by "Justin Mclean (JIRA)" <ji...@apache.org> on 2017/02/12 08:42:41 UTC

[jira] [Created] (FLEX-35262) [FlexJS] Uncaught exception

Justin Mclean created FLEX-35262:
------------------------------------

             Summary: [FlexJS] Uncaught exception
                 Key: FLEX-35262
                 URL: https://issues.apache.org/jira/browse/FLEX-35262
             Project: Apache Flex
          Issue Type: Bug
          Components: FlexJS
            Reporter: Justin Mclean


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)