值已更改时触发事件

时间:2012-11-30 10:18:39

标签: actionscript-3 flex data-binding user-controls flash-builder

当一个值发生变化时(即当用户登录时)我试图在空中应用程序中触发一个事件(函数),但到目前为止我还没有成功触发我的函数......

我有以下代码:

用户类:

[Bindable]
public class User
{
    private var m_rssLink:String;

    public function get rssLink():String{
        return m_rssLink;
    }

    public function set rssLink(value:String):void{
        m_rssLink = value;
    }
}

具有id标头的标头组件,用户登录并定义用户:

<fx:Declarations>
    <user:User id="user" />
</fx:Declarations>

最后是带有actionscript的mxml代码:

private var loginWatcher:ChangeWatcher;

protected function creationCompleteHandler(event:FlexEvent):void
{
    this.loginWatcher = ChangeWatcher.watch(header.user, ["rssLink"], sendRequest);
}

到目前为止,我试图以很多方式触发sendRequest函数(使用[bindable(event =“”)],使用bindsetter,...)到目前为止,Google没有给我任何其他选项。< / p>

任何人都会看到我的代码失败的地方,或者知道更好的方法来实现这个目标吗?

1 个答案:

答案 0 :(得分:1)

好吧,您已经为User创建了一个setter属性。用它来跟踪用户状态。

public function set rssLink(value:String):void{
    if (m_rsslink==value) return;
    m_rssLink = value;
    dispatchEvent(...); // use correct event(s) for certain values, then catch 
    // them in your watcher class. Use FlexEvents if you want.
}