2

我确实提交了一个(再次阅读后)完全错误的线程。这实际上是我想知道的:

在使用 MATE 的 Flex 应用程序中,假设我们有一个名为 View.mxml 的视图具有一个名为 ViewProp 的属性,以及一个名为 ClassManager 的具有一个属性 ClassProp 的类。假设我们有另一个名为 SecondView.mxml 的视图,其属性为 SecondProp。

是否可以以某种方式定义以下内容:每当 ViewProp 更改(在 View.mxml 中)时,ClassProp 也会在 ClassManager 中更改,这反过来又反映了 Secondview.mxml 在属性 SecondProp 中的更改?!

我希望这次描述正确!

提前致谢

4

2 回答 2

0

这种方式怎么样:

当 ViewProp 或 ClassProp 发生变化时,该属性会派发一个事件,并在 Secondview.mxml 中添加一个事件监听器来修改属性 SecondProp。

于 2011-01-10T07:20:16.670 回答
0

这与您的第一个问题有点不同。

视图类不能直接访问模型类,因此视图类必须调度一个事件来改变模型类。

1.)您必须定义某种新事件

public class ViewPropIsChangedEvent extends Event
{

  public static const SET_NEW_VALUE:String = "theNewValue";
  private var _value:Object;

  public ViewPropIsChangedEvent(type:String, value:Object, bubbling:Boolean=true, cancelable:Boolean=false)
  {
    super(type,bubbling,cancelable);
    _value = value;
  }
   public function get value():Object
  {
    return _value;
  }
}

2.) 当您更改 View.mxml 中的 ViewProp 时,您必须调度一个事件

dispatchEvent(new ViewPropIsChangedEvent(ViewPropIsChangedEvent.SET_NEW_VALUE, theNewValue))

3.) 在 EventMap 中你必须处理事件

</EventHandlers type="{ViewPropIsChangedEvent.SET_NEW_VALUE}"> 
  <PropertySetter generator="{ClassManager}" 
                  targetKey="ClassProp" 
                  source="{event.value}"/>
</EventHandlers>

4.) 在 ModelMap 中,您必须已经将 Secondview.SecondProp 绑定到 ClassManager.ClassProp

<Injectors target="{Secondview}">
   <PropertyInjector targetKey="SecondProp" 
                     source="{ClassManager}"
                     sourceKey="ClassProp"/>
</Injectors>
于 2011-01-10T08:30:45.837 回答