如何从Kotlin调用一个JavaScript函数,期望一个jQuery ajax设置对象?

我需要转换下面的代码,它使用jQuery中的一些名为ajax设置 (在create()调用内部的javascript中用于创建一个CouchDB数据库 )

 $.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,所以标题看起来大概是这样的:

 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如何为选项声明头文件