2

我目前正在尝试 Ktor。但它在向按钮注册 onClickListener 时已经失败。

我只是想知道,因为 onClick 是从 String 扩展而来的。如果我点击 onClick 我得到的代码是这个:

var CommonAttributeGroupFacade.onClick : String
    get()  = attributeStringString.get(this, "onclick")
    set(newValue) {attributeStringString.set(this, "onclick", newValue)}

所以我认为 onClick 有一个 getter 和 setter,但没有更多。我安装了 location 和 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 有更多的经验。

4

1 回答 1

0

问题 这取决于您在哪个模块中工作。

在服务器端(JVM)上,您不能在 Kotlin 中编写 Javascript 代码并将其分配给这样的函数。

要找到解决方案,我必须进一步了解您想要实现的目标。

这是许多可能性中的两种,您可以做什么:

解决方案 1 您可以将 javascript 代码分配为字符串。您通过分配代码“Hello”来做到这一点。也许你想调用一个在window对象中全局可用的函数?

解决方案2 在客户端JS代码中,可以导入kotlinx.html.js.onClickFunction,简单编写

button{
  onClickFunction = { println("clicked") }
}

执行用 Kotlin 编写的代码。

于 2021-07-13T04:46:10.517 回答