0

我刚刚将Scala.rx版本 0.3.2 升级到 0.4.0,突然我的triggers 上出现以下错误:

overloaded method value trigger with alternatives:
[error]   (f: Boolean => Unit)(implicit ownerCtx: rx.Ctx.Owner)rx.Obs <and>
[error]   (thunk: => Unit)(implicit ownerCtx: rx.Ctx.Owner)rx.Obs
[error]   cannot be applied to (() => org.scalajs.jquery.JQuery)
[error]   MyRx.trigger { () =>

对于我所有的方法调用,如下所示:

import rx.Ctx.Owner.Unsafe._

val MyRx: Var[Boolean] = Var[Boolean](false)

MyRx.trigger {
   // ...
   jQuery("#page_content").css("opacity", 1)
}

不知何故,我无法解决这个问题。我该如何解决这个问题?

这似乎有效:

MyRx.trigger {
  // ...
  jQuery("#page_content").css("opacity", 1)
  ()
}

但我绝对更喜欢这样的解决方案:

MyRx.trigger {
  // ...
  jQuery("#page_content").css("opacity", 1)
}: => Unit // doesnt compile
4

1 回答 1

0

请注意MyRx.trigger { () =>错误消息。首先,您需要删除该() =>部分(它也可能在下一行{)。

=> Unit由于参数类型是按名称参数,它会自动将块{ ...; jQuery("#page_content").css("opacity", 1) }转换为 into { () => ...; jQuery("#page_content").css("opacity", 1) }

在这种情况下,似乎不会发生丢弃,您可以明确丢弃结果,例如

val _ = jQuery("#page_content").css("opacity", 1)

或者

jQuery("#page_content").css("opacity", 1): Unit

如果你想把它放在整个块上,语法会更难看:

MyRx.trigger({
   // ...
   jQuery("#page_content").css("opacity", 1)
}: Unit)
于 2018-12-11T17:46:25.240 回答