Over 10 years of community discussion and knowledge are maintained here as a read-only archive.
package org.puremvc.as3.demos.flex.employeeadmin.model{ import mx.collections.ArrayCollection; import org.puremvc.as3.interfaces.IProxy; import org.puremvc.as3.patterns.proxy.Proxy; import org.puremvc.as3.demos.flex.employeeadmin.model.vo.UserVO; import org.puremvc.as3.demos.flex.employeeadmin.model.enum.DeptEnum; public class UserProxy extends Proxy implements IProxy { public static const NAME:String = 'UserProxy'; public function UserProxy( ) { super( NAME, new ArrayCollection ); // generate some test data addItem( new UserVO('lstooge','Larry', 'Stooge', "larry@stooges.com", 'ijk456',DeptEnum.ACCT) ); addItem( new UserVO('cstooge','Curly', 'Stooge', "curly@stooges.com", 'xyz987',DeptEnum.SALES) ); addItem( new UserVO('mstooge','Moe', 'Stooge', "moe@stooges.com", 'abc123',DeptEnum.PLANT) ); } // return data property cast to proper type public function get users():ArrayCollection { return data as ArrayCollection; } // add an item to the data public function addItem( item:Object ):void { users.addItem( item ); } // update an item in the data public function updateItem( item:Object ):void { var user:UserVO = item as UserVO; for ( var i:int=0; i<users.length; i++ ) { if ( users[i].username == user.username ) { users[i] = user; } } } // delete an item in the data public function deleteItem( item:Object ):void { var user:UserVO = item as UserVO; for ( var i:int=0; i<users.length; i++ ) { if ( users[i].username == user.username ) { users.removeItemAt(i); } } } }}
package org.puremvc.as3.demos.flex.employeeadmin.model.vo{ import mx.collections.ArrayCollection; import org.puremvc.as3.demos.flex.employeeadmin.model.enum.DeptEnum; [Bindable] public class UserVO { public function UserVO ( uname:String=null, fname:String=null, lname:String=null, email:String=null, password:String=null, department:DeptEnum = null ) { if( uname != null ) this.username = uname; if( fname != null ) this.fname = fname; if( lname != null ) this.lname = lname; if( email != null ) this.email = email; if( password != null ) this.password = password; if( department != null ) this.department = department; } public var username:String = ''; public var fname:String = ''; public var lname:String = ''; public var email:String = ''; public var password:String = ''; public var department:DeptEnum = DeptEnum.NONE_SELECTED; public function get isValid():Boolean { return username != '' && password != '' && department != DeptEnum.NONE_SELECTED; } public function get givenName():String { return this.lname+', '+this.fname; } }}
for (i = 0; i < AProxy.bProxy.someValueList.length; i++) { var someName:String = AProxy.bProxy.getSomeValueName(AProxy.bProxy.someValueList[i]); ...}
var someName:String = AProxy.bProxy.getSomeValueName(AProxy.bProxy.someValueList[i]);
public var bProxy:IBProxypublic function A1Proxy() { ... bProxy = B1Proxy(facade.retrieveProxy("B1Proxy"));}
aProxy = IAProxy(notification.getBody());aData = aProxy.getAData();bData = aProxy.bProxy.getBData();for (i = 0; i < bData.someValueList.length; i++) { var someName:String = bData.someValueList[i]); ...}
aProxy = IAProxy(notification.getBody());aData = aProxy.getAData();bData = aProxy.bProxy.getBData();
I am reasonably sold on the fact that the above proxies need to all be unique (for example, due to subtle differences between the databases, the fact that the requests are all separate and asynchronous, etc).