Yeah, I've been directly updating the properties. Here's the weird
part... if I use the ArrayCollection as a dataProvider for a List
control, it updates. If I use it for a custom control that I've
created, it does not.
Example:
This works as expected:
<mx:List dataProvider="{model.users}"/>
This does not:
<jr:customComponent dataProvider={model.users}/>
//pseudo component source
<customComponent>
<mx:Script>
private var _dp:ArrayCollection;
public function set dataProvider(dp:ArrayCollection):void {
_dp = dp;
trace("this fires when the AC is created, but not when it's contents
change");
}
</mx:Script>
</customComponent>
Thanks again!
John
On Mar 10, 2009, at 4:44 PM, valdhor wrote:
How do you update a given UserVO's userData? Do you directly access
the public properties?
I have never done it this way - I use getters and setters...
package com.jrobinson.model.VO
{
[Bindable]
public class UserVO
{
private var _id:int = -1;
private var _username:String = null;
private var _enabled:Boolean = false;
private var _userData:XMLList = null;
public function UserVO(id:int, username:String,
enabled:Boolean, userData:XMLList)
{
_id = id;
_username = username;
_enabled = enabled;
_userData = userData;
}
//accessor methods
public function get id():int {return _id;}
public function get username():String {return _username;}
public function get enabled():Boolean {return _enabled;}
public function get userData():XMLList {return _userData;}
//mutator methods
public function set id(id:int):void {_id = id;}
public function set username(username:String):void
{_username = username;}
public function set enabled(enabled:Boolean):void {_enabled
= enabled;}
public function set userData(userData:XMLList):void
{_userData = userData;}
}
}
> >> I have a strange issue with data binding not updating when an
item in
> >> an ArrayCollection is changed. I'm using Cairngorm and have the
> >> following setup. In my ModelLocator I have a 'users'
ArrayCollection
> >> that contains 'UserVO' objects. I have a two views that binds
their
> >> dataProvider to the 'users' AC in the ModelLocator. My UserVO
looks
> >> like so:
> >>
> >> package com.jrobinson.model.VO
> >> {
> >> [Bindable]
> >> public class UserVO
> >> {
> >> public var id:int = -1;
> >> public var username:String = null;
> >> public var enabled:Boolean = false;
> >> public var userData:XMLList = null;
> >>
> >>
> >> public function UserVO(user_id:int, uName:String,
enabled:Boolean,
> >> d:XMLList)
> >> {
> >> id = user_id;
> >> username = uName;
> >> enabled = enabled;
> >> userData = d;
> >> }
> >>
> >> }
> >> }
> >>
> >> I first have a command that loads all of the users and
populates the
> >> AC. This updates the bindings as expected. I then have a second
> >> command that loads the userData portion for a given user. Once
> >> retrieved, I update the given UserVO's userData, but this time,
the
> >> bindings fail to update.
> >>
> >> I feel like I've seen this before but can't find where or what
the
> >> workaround might be. I guess I'm just looking for confirmation
that
> >> this should or shouldn't work.
> >>
> >> Thanks!
> >> John
> >>