kotlin - 使用 Kotlinx 在 Ktor 中为按钮添加 onClick

我目前正在试用 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/

相关文章:

postgresql - 外键约束问题

javascript - typescript 装饰器 : Add instance field t

scala - 在同一规范文件中测试 akka-http 和 akka actor 时,如何解决冲突

python - 如何在请求中流式传输文件?

react-native - 我可以通过 expo 获得在 android 上工作的 webpack

spring-boot - 在 spring cloud 配置更新时重新加载 CamelContex

nginx - 为什么我在nginx中无法正常显示CJK字符?

reactjs - 相对于箭头键旋转图像 react js

reactjs - AWS 放大自定义问候语

qt - 如何在使用 AUTORCC 的 CMake 项目中使用 qtquick_compiler_