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
> >>

Reply via email to