正确使用 js.ThisFunction0
Correct usage of js.ThisFunction0
我正在尝试让 scala.js 与 w2ui jQuery 库一起工作。但是,当我在表单中定义我的重置操作时,行为并不像我预期的那样。
为了处理我的重置动作。我在我的 scalajs 代码中定义了如下内容:
...
actions = js.Dynamic.literal(
reset = { form: W2Form =>
form.clear()
}: js.Function1[W2Form, Any],
...
然而,当我点击重置按钮时,这会导致错误:
TypeError: this.refresh is not a function
this.refresh();
^
检查生成的 javascript 代码后,我明白了为什么会出现此错误:
"actions": {
"reset": (function(f) {
return (function() {
return f.apply__O__O(this)
})
})(new $c_sjsr_AnonFunction1().init___sjs_js_Function1((function(form) {
return (0, form["clear"])()
}))),
这可以通过手动更改最后一行来纠正:
return (form["clear"])()
谁能告诉我我做错了什么?
您对 js.ThisFunction0
的使用完全没问题。您的问题来自您拨打 clear
的电话。我怀疑你在 W2Form
:
中这样定义了 clear
@js.native
class W2Form(...) extends js.Object {
val clear: js.Function0[Unit] = js.native // or var or def
...
}
这将导致 form.clear()
首先 select 来自 form
的字段 clear
,然后独立于 form
调用检索到的函数。如果想让clear
作为form
的方法被调用,需要声明为方法:
def clear(): Unit = js.native
我正在尝试让 scala.js 与 w2ui jQuery 库一起工作。但是,当我在表单中定义我的重置操作时,行为并不像我预期的那样。
为了处理我的重置动作。我在我的 scalajs 代码中定义了如下内容:
...
actions = js.Dynamic.literal(
reset = { form: W2Form =>
form.clear()
}: js.Function1[W2Form, Any],
...
然而,当我点击重置按钮时,这会导致错误:
TypeError: this.refresh is not a function
this.refresh();
^
检查生成的 javascript 代码后,我明白了为什么会出现此错误:
"actions": {
"reset": (function(f) {
return (function() {
return f.apply__O__O(this)
})
})(new $c_sjsr_AnonFunction1().init___sjs_js_Function1((function(form) {
return (0, form["clear"])()
}))),
这可以通过手动更改最后一行来纠正:
return (form["clear"])()
谁能告诉我我做错了什么?
您对 js.ThisFunction0
的使用完全没问题。您的问题来自您拨打 clear
的电话。我怀疑你在 W2Form
:
clear
@js.native
class W2Form(...) extends js.Object {
val clear: js.Function0[Unit] = js.native // or var or def
...
}
这将导致 form.clear()
首先 select 来自 form
的字段 clear
,然后独立于 form
调用检索到的函数。如果想让clear
作为form
的方法被调用,需要声明为方法:
def clear(): Unit = js.native