我目前正在试用 Ktor。但是它已经无法将 onClickListener 注册到按钮。
我只是想知道,因为 onClick 是从 String 扩展而来的。如果我点击 onClick,我得到的代码是这个:
var CommonAttributeGroupFacade.onClick : String
get() = attributeStringString.get(this, "onclick")
set(newValue) {attributeStringString.set(this, "onclick", newValue)}
所以我认为 onClick 有一个 getter 和 setter 但没有更多。我安装了位置和 FreeMarker,所以这是我的路线:
get<CharityRoute> {
val id = it.id
call.respondHtml {
body {
h1 { +"${it.id}" }
ul {
for (n in it.list) {
li { +"$n" }
}
}
button {
text("Run function")
onClick = "Hello"
}
}
}
}
也许有人对 Ktor 尤其是 Kotlinx 有更多经验。
最佳答案
问题 这取决于您在哪个模块中工作。
在服务器端 (JVM),您不能在 Kotlin 中编写 Javascript 代码并将其分配给这样的函数。
要找到解决方案,我必须进一步了解,你到底想达到什么目的。
这里有两种可能性,你可以做什么:
解决方案 1
您可以将 javascript 代码分配为字符串。您只是通过分配代码“Hello”来做到这一点。
也许您想调用一个在 window
对象中全局可用的函数?
解决方案 2
在客户端JS代码中,可以导入kotlinx.html.js.onClickFunction
,简单写
button{
onClickFunction = { println("clicked") }
}
执行用 Kotlin 编写的代码。
https://stackoverflow.com/questions/60898585/