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" <[email protected]> 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:[email protected]] 
    Sent: Thursday, April 11, 2019 10:46 AM
    To: [email protected]
    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" <[email protected]> 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