0

在常规的 JavaFX 中,我会在 2 个或多个 observables 上创建一个绑定,如下所示:

xxxProperty().bind(Bindings.createObjectBinding(() -> {...}, observable1, observable2, ...));

在 ReactFx 中,我被证明可以创建这样的绑定:

xxxProperty().bind(val.map(value -> {...}));

但是我如何在 2 个或更多 ReactFX 可观察对象(Val 和/或 Var)上创建绑定?

4

1 回答 1

1

对于一般情况,请使用以下之一:

static <T> Val<T> create(Supplier<? extends T> computeValue, EventStream<?> invalidations)
static <T> Val<T> create(Supplier<? extends T> computeValue, Observable... dependencies)

对于组合 2-6 个值,提供了一些方便的方法:

static <A,B,R> Val<R> combine(ObservableValue<A> src1, ObservableValue<B> src2, BiFunction<? super A,? super B,? extends R> f)
static <A,B,C,R> Val<R> combine(ObservableValue<A> src1, ObservableValue<B> src2, ObservableValue<C> src3, TriFunction<? super A,? super B,? super C,? extends R> f)
static <A,B,C,D,R> Val<R> combine(ObservableValue<A> src1, ObservableValue<B> src2, ObservableValue<C> src3, ObservableValue<D> src4, TetraFunction<? super A,? super B,? super C,? super D,? extends R> f)
static <A,B,C,D,E,R> Val<R> combine(ObservableValue<A> src1, ObservableValue<B> src2, ObservableValue<C> src3, ObservableValue<D> src4, ObservableValue<E> src5, PentaFunction<? super A,? super B,? super C,? super D,? super E,? extends R> f)
static <A,B,C,D,E,F,R> Val<R> combine(ObservableValue<A> src1, ObservableValue<B> src2, ObservableValue<C> src3, ObservableValue<D> src4, ObservableValue<E> src5, ObservableValue<F> src6, HexaFunction<? super A,? super B,? super C,? super D,? super E,? super F,? extends R> f)

所有这些都是Val.

于 2017-02-07T19:17:48.260 回答