我在一个组件中有一个可约束力的getter,可以告诉我[隐藏]计时器正在运行时。我还有一个上下文菜单,如果该计时器正在运行,则应禁用其中一个菜单项。是否可以创建一个ChangeWatcher,以观察 消极的 可约束属性/Getter的条件,并更改 enabled 菜单项的属性?

这是我试图绑定在一起的基本方法:

A类:

[Bindable]
public function get isPlaying():Boolean {
    return (_timer != null) ? _timer.running : false;
}

B类:

private var _playingWatcher:ChangeWatcher;
public function createContextMenu():void {
    //...blah blah, creating context menu
    var newItem:ContextMenuItem = new ContextMenuItem();
    _playingWatcher = BindingUtils.bindProperty(newItem, "enabled", _classA, "isPlaying");
}

在上面的代码中,我有反向情况:当iSplaying()为true时,启用了菜单项;我希望只有在条件为false时才能启用它。

我可以创建第二个getter(还有其他依赖当前getter的绑定)以返回反向状态,但这对我来说听起来很丑:

[Bindable]
public function get isNotPlaying():Boolean {
    return !isPlaying;
}

这是可能的,还是我完全缺少另一种方法?

有帮助吗?

解决方案

可以在绑定的utils上使用绑定设置器,但是您的方法似乎有效,否则绑定属性对其映射的属性类型视而不见,因此它没有负条件参数。

其他提示

我将扩展contextMenuitem并在其上创建一个自定义属性,您可以使用该属性来设置启用或不设置基础contextMenuitem

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top