Tag: kotlin js interop

如何使Kotlin / JavaScript中的按钮点击监听器事件?

在IntellJ IDEA里面,我在HTML文件中用一个id创建了一个按钮。 我想要实现的是将标题标签更改为“按钮点击”使用kotlin。 在搜索kolinlang.org网站和其他资源时,我无法find具体的事情简单的参考,我不知道是否有一个翻译的kotlin / JavaScript网站,所有这些都放在一起像这个网站,例如: https://www.w3schools的.com / JS / Default.asp的 谢谢

Kotlin JS用可选的参数错误重写“外部”函数

我拉着jQuery在我的项目中使用ts2kt。 基本工作正常,但是,我不知道如何调用这个函数(我只是想传递一个回调): fun done(doneCallback1: JQueryPromiseCallback? = definedExternally /* null */, vararg doneCallbackN: JQueryPromiseCallback): JQueryPromise JQueryPromiseCallback接口如下所示: external interface JQueryPromiseCallback { @nativeInvoke operator fun invoke(value: T? = definedExternally, vararg args: Any) } 我试图创建一个它的实例传入像这样: done(object : JQueryPromiseCallback { override fun invoke(value: Any?, vararg args: Any) { } }) 但是,我得到一个错误的调用函数: 使用可选参数重写“外部”function 生成的@nativeInvoke注释也被弃用,并给我一个我不明白的弃用信息: 使用动态的身体使用内联扩展function 我应该纠正ts2kt生成的文件? 如果是这样,怎么样? 我只是没有覆盖invoke方法的语法吗?

我如何在Kotlin中为属性的后台字段设置JsName?

我在1.0.x中玩过Kotlin不支持的JavaScript后端,现在正在尝试将我的玩具项目迁移到1.1.x. 这是一个与PouchDB接口的单页Web应用程序的最基本的骨骼。 要将数据添加到PouchDB,您需要具有特定属性_id和_rev JavaScript对象。 他们也不需要以_开始的任何其他属性,因为它们是由PouchDB保留的。 现在,如果我创建一个这样的类,我可以发送实例到PouchDB。 class PouchDoc( var _id: String ) { var _rev: String? = null } 但是,如果我做任何事情来使属性虚拟 – 让他们重写一个接口,或打开类,并创建一个覆盖它们的子类 – _id字段名称变成类似于_id_mmz446$_0 ,所以PouchDB拒绝目的。 如果我将@JsName(“_id”)到属性,只影响生成的getter和setter – 它仍然留下一个损坏的名称的支持字段。 而且,对于名称不以_开头的虚拟属性,PouchDB将接受该对象,但它只存储带有错误名称的支持字段,而不是名称正确的属性。 现在我可以通过使它们不是虚拟的来解决问题。 但是我正在考虑在Kotlin中分享PouchDoc和非PouchDoc类之间的接口,而且我似乎无法做到这一点。 任何想法我可以做这个工作,还是需要Kotlin语言改变?

将Kotlin / Js对象动态转换为纯javascript对象的简单方法是什么?

例如,我们有这样的结构: data class Item( val city: String, val name: String ) val structure = mapOf(“items” to listOf( Item(“NY”, “Bill”), Item(“Test”, “Test2”)) ) 我想用Javascript获取这个对象: var structure = { “items”: [ { “city”: “NY”, “name”: “Bill” }, { “city”: “Test”, “name”: “Test2” } ] } 如何我们可以将map从Kotlin转换为dynamictypes的Javascript结构? 我只find这个明确的方法: fun Map.toJs(): dynamic { val result: dynamic = object {} […]

kotlin-js将字符串转换为另一种编码

我解析网站,并得到Windows-1251编码的字符串。 我想打印它到控制台例如。 但在控制台中,我看到了不可理解的符号。 如何可以将Windows-1251字符串转换为UTF-8或如何使用kotlin-js打印正常字符串?

Kotlin以Javascript文件编译

目前,我正在处理一个Kotlin / JS项目中的两个.kt文件。 这两个.kt文件编译成一个.js文件(在“out / production / myprojectfolder / myproject.js”这是默认目录)。 每个.kt文件代表两个单独的html页面。 我希望每个html页面都有自己的单个.js文件。 我的问题是,有没有办法将两个.kt文件编译成两个单独的.js文件?

我如何在Kotlin中为属性的后台字段设置JsName?

我在1.0.x中使用了Kotlin不支持的JavaScript后端,现在正在尝试将我的玩具项目迁移到1.1.x. 这是一个与PouchDB接口的单页Web应用程序的最基本的骨骼。 要将数据添加到PouchDB,您需要具有特定属性_id和_rev JavaScript对象。 他们也不需要以_开始的任何其他属性,因为它们是由PouchDB保留的。 现在,如果我创建一个这样的类,我可以发送实例到PouchDB。 class PouchDoc( var _id: String ) { var _rev: String? = null } 但是,如果我做任何事情来使属性虚拟 – 让他们重写一个接口,或打开类,并创建一个覆盖它们的子类 – _id字段名称变成类似于_id_mmz446$_0 ,所以PouchDB拒绝目的。 如果我将@JsName("_id")到属性,只影响生成的getter和setter – 它仍然留下一个损坏的名称的支持字段。 而且,对于名称不以_开头的虚拟属性,PouchDB将接受该对象,但它只存储带有错误名称的支持字段,而不是存储名称恰当的属性。 现在我可以通过使它们不是虚拟的来解决问题。 但是我正在考虑在Kotlin中分享PouchDoc和非PouchDoc类之间的接口,而且我似乎无法做到这一点。 任何想法我可以做这个工作,还是需要一个Kotlin语言的变化?

如何在定位JavaScript时表示多种类型(联合类型)

我想要做的是使用一个泛型类型,可以是其他三种类型之一。 这是一个函数的例子: fun <T> get(key: String) : T where T: String, T: Number, T: Boolean {} 上面的代码不起作用,那么我应该怎么做呢?

使用动态属性名称将属性分配给JavaScript对象

我想这样做,但我不知道,我不能用js()插入任何动态数据,因为js()只接受常量字符串参数(或有办法做到这一点?) val doc: dynamic = Any() doc._id = name data.forEach { it.forEach { entry -> // need to set property of the doc using entry.key as the property name with entry.value } }

如何从嵌套的kotlin.js.Promise创建一个Promise?

kotlin.js.Promise具有这个声明的功能: open fun <S> then( onFulfilled: (T) -> S, onRejected: (Throwable) -> S = definedExternally ): Promise<S> 我有两个函数a()和b() 。 他们都返回一个Promise<Int> 。 (它们代表了一些对服务器的请求。)我需要将它们组合起来,并创建一个新的函数,如: fun c(): Promise<Int> { a().then({ b() }) } 但这是不可能的,因为返回类型是Promise<Promise<Int>>而不是Promise<Int> 。 我认为这是可能的Javascript。 我如何链接Kotlin的承诺?