Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Kotlin中定义全局函数,在html文件中用作onclick回调_Javascript_Kotlin - Fatal编程技术网

Javascript 在Kotlin中定义全局函数,在html文件中用作onclick回调

Javascript 在Kotlin中定义全局函数,在html文件中用作onclick回调,javascript,kotlin,Javascript,Kotlin,我想在Kotlin/transpiled JavaScript中定义一个函数,我可以将它的原始和全局形式传递给html中的一些输入。 对于原始表单,我指的不是[project name].doClick <input type="button" value="Click me!" onclick="doClick();> 假设您有一个名为sample的模块,其类型可以是普通模块,也可以是UMD模块。其内容如下: package foo fun doClick() { pr

我想在Kotlin/transpiled JavaScript中定义一个函数,我可以将它的原始和全局形式传递给html中的一些输入。 对于原始表单,我指的不是[project name].doClick

<input type="button" value="Click me!" onclick="doClick();>

假设您有一个名为sample的模块,其类型可以是普通模块,也可以是UMD模块。其内容如下:

package foo

fun doClick() {
    println("Hello, world")
}
然后,您可以将其分配给click handler,如下所示:

<input type="button" value="Click me!" onclick="sample.foo.doClick();>

有关详细信息,请参阅。

我也遇到了类似的问题,尽管在我的案例中指定模块是不够的。 因此,关于Kotlin中定义全局函数的初始问题,我建议一种解决方法:

import kotlin.browser.window

fun main() {
    window.asDynamic()["doClick"] = ::doClick
}

fun doClick() {
    println("Hello, world")
}

在这段代码中,kotlin函数被显式分配给全局范围内的变量。现在你可以简单地用doClick调用你的函数了,我明白了。你知道完全合格的推荐人。你有什么理由不想通过考试吗?@Alexeyanderev嗯。。。我不知道什么是完全限定引用:P。唯一的原因是,我不想用名称空间前缀传递它是为了外观。它看起来更简单,对我来说也更好。HelI甚至无法描述,为什么我想避免那样。我想没有适当的理由,我只会使用名称空间。编辑:我根本不是网络开发者