gpt4 book ai didi

kotlin - 如何从Kotlin调用需要jQuery ajax设置对象的javascript函数?

转载 作者:行者123 更新时间:2023-12-02 13:24:23 25 4
gpt4 key购买 nike

我需要转换以下代码,它在jQuery中使用了一种叫做ajax settings的东西(在create()调用下面的javascript中使用了它来创建CouchDB database)

$.couch.db("mydb").create({
success: function(data) {
console.log(data);
},
error: function(status) {
console.log(status);
}
});

我已经定义了这些
@JsName("$")
external val jq: JQuery

val jCouch: dynamic get() = jq.asDynamic().couch

但我坚持如何转换javascript代码
jCouch.db.create("mydb")现在怎么办?

最佳答案

有几种方法。首先,您可以创建一个dynamic对象并在其中设置所需的属性:

val settings: dynamic = Any()
settings.success = { data: dynamic -> console.log(data) }
settings.error = { status: dynamic -> console.log(status) }
jCouch.db("db").create(settings)

(您也可以为数据或状态指定相应的类型)

其次,可以使用 json函数:
jCouch.db("db").create(json(
"success" to { ... }, // edit note: added missing comma
"error" to { ... }
))

第三,您可以编写类型化的标题。我不知道什么是Couch API,因此 header 看起来大致像这样:
external interface Db {
fun create(settings: DbCreateSettings)
}

external interface DbResult

external interface DbError

external interface DbCreateSettings {
val success: ((DbResult) -> Unit)?
val error: ((DbError) -> Unit)?
}

fun JQuery.db(name: String): Db = asDynamic().db(name)

fun foo() {
jq.db("name").create(object : DbCreateSettings {
override val success = { it: DbResult -> console.log(it) }
override val error = { it: DbError -> console.log(it) }
})
}

最后,您可以看到 Kotlin stdlib如何声明选项的 header

关于kotlin - 如何从Kotlin调用需要jQuery ajax设置对象的javascript函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44830315/

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