帮助容器

| 我正在使用视图堆栈...所以当视图更改时,例如当我们从一页移到另一个hide事件时,因此在我转到下一页之前,我将最后一页的信息保存在hide事件中,但是如果我什么都没有改变仍然在视图隐藏事件上调用更改并调用后端...我只想仅在视图中加总变化时才调用..像求和文本值...所以我有两个选择 如果进行总和更改,则在每个组件上使用事件监听器,使标志为true ... nd隐藏事件检查,如果标志为true,则向后端发送调用。 容器级别的事件侦听器..如果通过冒泡容器使子componenet中的总和更改知道是否调度了sum事件。nd使该标志为true。 我对集装箱有疑问... 我可以使用容器吗? 为什么我不能使用容器? 两种方式的优缺点是什么?     
已邀请:
我建议使用具有比较功能的dataProvider。例如,如果您要使用textinputs进行更改,则基本上可以执行以下操作:
[Bindable]
private var myDataProvider:Object = new Object();

private function creationCompleteHandler():void {
  myDataProvider.updated = false;
  myDataProvider.defaultValue = \'default\';
  myDataProvider.defaultValueTwo = \'default\';
}
等等 然后,在您的mxml中,您可以具有以下内容:
<mx:TextInput id=\"myText\" text=\"{myDataProvider.defaultValue}\" change=\"myDataProvider.defaultValue=myText.text; myDataProvider.updated=true;\" />
最后,在隐藏事件中,您可以执行以下操作:
private function hideEventHandler( event:Event ):void {
  if( myDataProvider.updated ){
    // Call your RemoteServices (or w/e) to update the information
  }
}
这样,当发生任何更改时,您可以更新dataProvider并每次都可以访问新信息。 希望这可以帮助!     
我在过去的几个项目中都使用了与您的第一种选择类似的方法。在每个窗体控件的
change
事件中,我调用一个小的函数,该函数仅将模型中的
changesMade
标志设置为
true
。当用户尝试离开我的表单时,我检查
changesMade
标志以查看是否需要保存信息。     
数据模型是您的朋友! 如果您习惯从已加载的数据中创建强类型数据模型,则此类问题就变得非常基础。 我总是有一个键绑定集来生成类似于此的代码嗅探...
    private var _foo:String;

    public function get foo():String
    {
        return _foo;
    }

public function set foo(value:String):void
{
    if(_foo == value)
        return;

    var oldVal:String = _foo;
    _foo = value;

    this.invalidateProperty(\"foo\", oldVal, value);
}
如果您的数据使用了这样的getter / setter,那么很容易在模型级别验证更改,从而将视图完全从流程中剔除。     

要回复问题请先登录注册