Hi Alex, 

#417

Spiros 




-----Original Message-----
From: Alex Harui [mailto:aha...@adobe.com.INVALID] 
Sent: Thursday, April 11, 2019 10:14 PM
To: dev@royale.apache.org
Subject: Re: For each iteration in ArrayList and ArrayCollection

Yes, it looks like ArrayCollection didn't implement propertyNames().  And 
Proxy.as may need to change as well.  Can you open an issue on Github so we 
don't forget?

Thanks,
-Alex

On 4/11/19, 2:17 AM, "spiros" <agg...@novusnet.gr> wrote:

    Hi Alex ,
     
    You have right the mx.collection.Arraylist and 
org.apache.flex.collections.ArrayList in flex didn’t iterate in flex. 
    I already included the js code for the three cases ( it is on bottom of 
email). 
    I don’t know if it helps but in one of my tests for the ArrayCollection I 
extend the class and add a method with name propertyNames (*1). 
    in this case the iteration work fine.
    
    (*1)
    public function propertyNames():Array
                {
                        var array:Array = new Array;
                        for (var i:int= 0 ; i< length;i++)
                        {
                                array.push(this[i]);
                        }
                        return array
                }
     
      
    
    Best regards
    
    
    Spiros 
    
    
    
    
    
    -----Original Message-----
    From: Alex Harui [mailto:aha...@adobe.com.INVALID] 
    Sent: Thursday, April 11, 2019 10:46 AM
    To: dev@royale.apache.org
    Subject: Re: For each iteration in ArrayList and ArrayCollection
    
    Hi Spiros,
    
    Could you use for-each on an ArrayList in Flex?  I didn't think it would 
work.  I thought it only worked on ArrayCollection in Flex.
    
    What is the output JavaScript for your sample code when you use 
ArrayCollection?  In Royale if you interate on XML, or a Proxy like 
ArrayCollection you have to make sure the compiler knows it is XML or a Proxy 
subclass.  If it thinks items is an Object it will not generate the right code.
    
    HTH,
    -Alex
    
    On 4/10/19, 6:01 AM, "spiros" <agg...@novusnet.gr> wrote:
    
        Hi, 
        
         
        
        I am trying to  make an iteration using the for each. The property 
class is
        a simple class with two fields.  
        
        I test the iteration with this classes :
        
         
        
         
        
        1.       org.apache.royale.collections.ArrayList error message: 
TypeError:
        propertyClass is undefined
        
        2.       mx.collections.ArrayList error message TypeError: 
propertyClass is
        undefined
        
        3.  mx.collections.ArrayCollection error  message TypeError:
        foreachiter0_target.propertyNames is not a function
        
         
        
         
        
         
        
         
        
        the as3 code is:
        
                      
        
        private function iteration():void
        
        {
        
        var object:Object = new Object;
        
               for each (var propertyClass:PropertyClass in items)
        
               {
        
                      object[propertyClass.name] = propertyClass.index;
        
               }
        
        }
        
         
        
        Thanks in advanced 
        
         
        
         
        
        Spiros 
        
         
        
         
        
         
        
         
        
         
        
        ps: The js generated code for this 3 classes 
        
         
        
        (1)
        
        /**
        
        * @private
        
        */
        
        
com.novusnet.jsTests.ArrayCollectionIteration.prototype.com_novusnet_jsTests
        _ArrayCollectionIteration_iteration = function() {
        
          var /** @type {Object} */ object = new Object();
        
          var foreachiter0_target =
        this.com_novusnet_jsTests_ArrayCollectionIteration_items;
        
          for (var foreachiter0 in foreachiter0_target) 
        
          {
        
          var propertyClass = foreachiter0_target[foreachiter0];
        
          {
        
            object[propertyClass.name] = propertyClass.index;
        
          }}
        
          
        
        };
        
        (2)
        
         
        
        /**
        
        * @private
        
        */
        
        
com.novusnet.jsTests.ArrayCollectionIteration.prototype.com_novusnet_jsTests
        _ArrayCollectionIteration_iteration = function() {
        
          var /** @type {Object} */ object = new Object();
        
          var foreachiter0_target =
        this.com_novusnet_jsTests_ArrayCollectionIteration_items;
        
          for (var foreachiter0 in foreachiter0_target) 
        
          {
        
          var propertyClass = foreachiter0_target[foreachiter0];
        
          {
        
            object[propertyClass.name] = propertyClass.index;
        
          }}
        
          
        
        };
        
         
        
        (3)
        
         
        
         
        
        /**
        
        * @private
        
        */
        
        
com.novusnet.jsTests.ArrayCollectionIteration.prototype.com_novusnet_jsTests
        _ArrayCollectionIteration_iteration = function() {
        
          var /** @type {Object} */ object = new Object();
        
          var foreachiter0_target =
        this.com_novusnet_jsTests_ArrayCollectionIteration_items;
        
          for (var foreachiter0 in foreachiter0_target.propertyNames()) 
        
          {
        
          var propertyClass = foreachiter0_target.getProperty(foreachiter0);
        
          {
        
            object[propertyClass.name] = propertyClass.index;
        
          }}
        
          
        
        };
        
         
        
              
        
        
    
    
    


Reply via email to