Jquery ui JQuery UI微调器旋转事件与Scala JS中的预期不符

Jquery ui JQuery UI微调器旋转事件与Scala JS中的预期不符,jquery-ui,scala.js,Jquery Ui,Scala.js,当我在ScalaJS中定义一个微调器并处理自旋值时,我无法像预期的那样在事件中获得新的自旋值。根据jqueryui文档,spin事件的第二个参数是包含value属性的UI对象。所以我定义了一个特征: trait Number extends js.Object { val value: Int = js.native } 然后这样处理我的旋转事件: jQuery("#mySpinner").spinner(js.Dynamic.literal(spin = { (e: HTMLInpu

当我在ScalaJS中定义一个微调器并处理自旋值时,我无法像预期的那样在事件中获得新的自旋值。根据jqueryui文档,spin事件的第二个参数是包含value属性的UI对象。所以我定义了一个特征:

trait Number extends js.Object {
    val value: Int = js.native
}
然后这样处理我的旋转事件:

jQuery("#mySpinner").spinner(js.Dynamic.literal(spin = { (e: HTMLInputElement, ui: Number)  =>
  log("Change: " + ui.value)
  }: js.ThisFunction1[HTMLInputElement, Number, Any]))
但是“value”属性似乎不是ui对象的成员,因为我在log语句中得到了下面的异常。有人能告诉我我做错了什么吗

未捕获异常:scala.scalajs.runtime.UndefinedBehaviorError:An 检测到未定义的行为:未定义不是的实例 java.lang.Integer


你说的是
e:HTMLInputElement
,但应该是
e:Event

我怀疑问题是前面评论的组合。您是正确的,因为您正在使用这个函数,所以第一个元素应该是某种类型的元素。(尽管如此,它真的是一个HTMLInputElement吗?这是一个稍微不寻常的元素类型,可以使用微调器。)

但是这个元素在函数参数前面加了前缀,而你却用它替换了一个

换句话说,你有

(e:HTMLInputElement,ui:Number)
但它必须如此

(元素:HTMLInputElement,e:事件,ui:编号)
以匹配预期的签名。因此在实践中,系统试图将事件的
成员(当然不存在)强制转换为整数。它发现
未定义,尝试将其强制转换为整数,然后爆炸


我不能说我百分之百肯定(在我看来,ui参数一开始就很奇怪——我对那里的jQueryUI文档有点怀疑),但这是我的猜测。尝试修复呼叫的签名,看看错误是否消失…

显然
ui
没有
value
属性。您应该记录
ui
本身以查看它的形状。我这样做了,它是一个[Object],这就是它在JQuery ui文档中所说的:。但它应该有一个value属性。问题是如何提取这个“值”数字?这是根据我所读的内容定义js.ThisFunction的合适方法。见: