0

我在童子军中有 4 个智能领域分层连接在一起。

所以假设我有智能字段 A、B、C、D 和 A 是 B 的父级,B 是 C 的父级,C 是 D 的父级。(从逻辑上讲,在侦察意义上没有必要。)

例如,如果我在 C 字段中输入值,则必须自动填写 A 和 B 字段,但如果我在 A 字段中输入值,则所有其他字段都需要重置。

我的问题是,如果我有 A :

@Override
protected void execChangedValue() {

  B.resetValue();
  C.resetValue();
  D.resetValue();
}

如果我在 B :

@Override
protected void execChangedValue() {

  // get changed value
  final Long A_value = A.getValue();

  // reset call child fields
  C.resetValue();
  D.resetValue();

  if (A_value == null) {

    A.setValue(NewValueForA);
  }
}

这将创建循环。B 将在 A 中设置值,A 将重置 B,......这不是我想要的......

Scout 中是否有解决此问题的通用方法?

4

1 回答 1

0

对于那些复杂的情况,我在这个答案setValueWithoutChangedValueTrigger(..)中已经介绍和解释了。你可以做:

getBField().setValueWithoutChangedValueTrigger(getBField().getInitValue());
getCField().setValueWithoutChangedValueTrigger(getCField().getInitValue());
getDField().setValueWithoutChangedValueTrigger(getDField().getInitValue());

等等...

另请参阅此相关讨论:控制是否调用 execChangedValue()

于 2015-12-26T07:53:32.380 回答