BindingUtils.bindProperty中的奇怪行为:非确定性

时间:2011-06-08 00:34:18

标签: flex data-binding binding flex4

我有点生气。

BindingUtils.bindSetterbindProperty我遇到了奇怪的问题。我想,如果我用BindingUtils.bindProperty绑定两个变量,我可以肯定它们总是会同步的。但事实并非如此。

我在creationCompleteHandler中有这段代码:

BindingUtils.bindProperty(this, "pendingHold", drhHold, "pending", false, true);

但是当我调试时,应该在某个点绑定在一起的两个变量具有不同的值:

enter image description here

我错过了什么?

提前致谢, 努诺

2 个答案:

答案 0 :(得分:1)

您定义的绑定是单向的。设置drhHold.pending后,this.pendingHold将被设置。这不是反过来。

换句话说,如果您有以下代码,您所描述的内容可能会发生:

this.drhHold.pending = false;
this.pendingHold = true;

如果您希望双向进行,则需要设置另一个方向:

BindingUtils.bindProperty(this, "pendingHold", drhHold, "pending", false, true);
BindingUtils.bindProperty(drhHold, "pending", this, "pendingHold", false, true);

当然,所有这些都假定这两个属性都是[Bindable]

答案 1 :(得分:0)

在这种情况下不需要绑定:

public class Class1
{
   private var _class2:Class2 = new Class2();

   [Bindable]
   public function get pending():Boolean
   {
      return this._class2.pending;
   }

   public function set pending(value:Boolean):void
   {
      this._class2.pending = value;
   }
}

只要Class 2.pending也是可绑定的,这将使Class1.pending绑定到Class2.pending。