【问题标题】:Add onClick to Button in Ktor with Kotlinx使用 Kotlinx 将 onClick 添加到 Ktor 中的按钮
【发布时间】:2020-07-08 22:26:31
【问题描述】:

我目前正在试用 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 有更多经验。

【问题讨论】:

    标签: kotlin freemarker ktor kotlinx


    【解决方案1】:

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

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

    要找到解决方案,我必须进一步了解,您想要实现的究竟是什么。

    这里有两种可能性,你可以做什么:

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

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

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

    执行用 Kotlin 编写的代码。

    【讨论】:

      猜你喜欢
      • 2021-06-18
      • 1970-01-01
      • 2011-10-20
      • 2013-12-19
      • 2021-06-18
      • 1970-01-01
      • 2012-10-08
      • 2018-01-09
      • 2011-12-21
      相关资源
      最近更新 更多