gpt4 book ai didi

javascript - js.ThisFunction0的正确用法

转载 作者:行者123 更新时间:2023-12-02 15:29:46 24 4
gpt4 key购买 nike

我正在尝试让 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$2) {
return (0, form$2["clear"])()
}))),

可以通过手动将最后一行更改为:

  return (form$2["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() 首先从 form 选择字段 clear,然后独立于 调用检索到的函数>表单。如果您希望 clear 作为 form方法 被调用,您需要将其声明为方法:

def clear(): Unit = js.native

关于javascript - js.ThisFunction0的正确用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33419667/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com