Hi , 

 

I create this piece of code to demonstrate the problem  I discovered
recently

This is an event listener from a RemoteObject call that return an
ArrayCollection with 2 entries of type Object .

 

 

private function getComplexStructResultHandler(event:ResultEvent):void

{

       var result:ArrayCollection= event.result.data;

       display.text="BEGIN_DEBUG-->";

       for (var i:int=0 ;i<result.length; i++)

//for each (var data:Object in result)

       {

              var data:Object = result[i]

              trace(data);

              display.text = display.text + "BEGIN_ENTRY:"  + data.ID + ":"+
data.Description +":"+data.Item_Category_Code +":"+ data.Unit_Cost+
":END_ENRTY";

       }

display.text= display.text +"-->END_DEBUG";

}

 

The display  is a label on screen and I got this output  when I use the
js_debug version of code  :

 

BEGIN_DEBUG-->BEGIN_ENTRY:10000011:Windows Apache and Webapi net (JSON)
:20:11.00000000:END_ENRTYBEGIN_ENTRY:10000012:Windows Apache and Webapi net
(JSON) :20 :1200.22000000:END_ENRTY-->END_DEBUG

 

When I use the js_release output the output is :

 

BEGIN_DEBUG-->BEGIN_ENTRY:undefined:undefined:10000011:undefined:END_ENRTYBE
GIN_ENTRY:undefined:undefined:10000012:undefined:END_ENRTY-->END_DEBUG

 

As a result 

 

data.ID is undefined 

data.Description is undefined 

data.Item_Category_Code has the data.ID field Data

data.Unit_Cost is undefined

 

 

 

the JavaScript code generated by compiler in debug is :

/**

* @private

* @param {mx.rpc.events.ResultEvent} event

*/

CFcommunication.prototype.CFcommunication_getComplexStructResultHandler =
function(event) {

  var /** @type {mx.collections.ArrayCollection} */ result =
event.result.data;

  this.display.text = "BEGIN_DEBUG-->";

  for (var /** @type {number} */ i = 0; i < result.length; i++) {

    var /** @type {Object} */ data = result.getProperty(i);

    org.apache.royale.utils.Language.trace(data);

    this.display.text = this.display.text + "BEGIN_ENTRY:" + data.ID + ":" +
data.Description + ":" + data.Item_Category_Code + ":" + data.Unit_Cost +
":END_ENRTY";

  }

  this.display.text = this.display.text + "-->END_DEBUG";

};

 

In release the code is : 

 

prototype.gr=function(a)

{

       a=a.result.data;

       this.display.text='BEGIN_DEBUG--\x3e';

       for(var b=0;b<a.length;b++)

       {

              var c=a.pc(b);

 
this.display.text=this.display.text+'BEGIN_ENTRY:'+c.HD+':'+c.GD+':'+c.ID+':
'+c.JD+':END_ENRTY'

              }this.display.text+='--\x3eEND_DEBUG'

       };

 

 

 

When change this  line of code :

display.text = display.text + "BEGIN_ENTRY:"  + data.ID + ":"+
data.Description +":"+data.Item_Category_Code +":"+ data.Unit_Cost+
":END_ENRTY";

With this one 

display.text = display.text + "BEGIN_ENTRY:"  + data["ID"] + ":"+
data["Description"] +":"+data["Item_Category_Code"] +":"+ data["Unit_Cost"]+
":END_ENRTY";

 

I get the correct results

And the generated code in js-release folder for this function is 

 

prototype.gr=function(a)

{

       a=a.result.data;

       this.display.text='BEGIN_DEBUG--\x3e';

       for(var b=0;b<a.length;b++)

       {

              var c=a.pc(b);

 
this.display.text=this.display.text+'BEGIN_ENTRY:'+c.ID+':'+c.Description+':
'+c.Item_Category_Code+':'+c.Unit_Cost+':END_ENRTY'

       }

       this.display.text+='--\x3eEND_DEBUG'

}

 

 

 

 

Best regards

 

 

Spiros 

 

Reply via email to