Scalajs-bundler button.onclick не работает
У меня есть следующий scala.js-объект:
package tld.test
import org.scalajs.dom
import scala.scalajs.js.annotation.JSExport
object Main extends JSApp
{
@JSExport
def testFunction(): Unit =
{
dom.window.alert("testFunction()")
println("Blubb")
}
def main(): Unit = dom.window.alert("main()")
}
Это генерирует
/** @constructor */
function $c_Ltld_test_Main$() {
$c_O.call(this)
}
$c_Ltld_test_Main$.prototype = new $h_O();
$c_Ltld_test_Main$.prototype.constructor = $c_Ltld_test_Main$;
/** @constructor */
function $h_Ltld_test_Main$() {
/*<skip>*/
}
$h_Ltld_test_Main$.prototype = $c_Ltld_test_Main$.prototype;
$c_Ltld_test_Main$.prototype.init___ = (function() {
return this
});
$c_Ltld_test_Main$.prototype.main__V = (function() {
$m_Lorg_scalajs_dom_package$().window__Lorg_scalajs_dom_raw_Window().alert("Yeah!")
});
$c_Ltld_test_Main$.prototype.$$js$exported$meth$testFunction__O = (function() {
this.testFunction__V()
});
$c_Ltld_test_Main$.prototype.testFunction__V = (function() {
$m_Lorg_scalajs_dom_package$().window__Lorg_scalajs_dom_raw_Window().alert("testFunction()");
var this$2 = $m_s_Console$();
var this$3 = $as_Ljava_io_PrintStream(this$2.outVar$2.v$1);
this$3.java$lang$JSConsoleBasedPrintStream$$printString__T__V("Blubb\n")
});
$c_Ltld_test_Main$.prototype.$$js$exported$meth$main__O = (function() {
this.main__V()
});
$c_Ltld_test_Main$.prototype.main = (function() {
return this.$$js$exported$meth$main__O()
});
$c_Ltld_test_Main$.prototype.testFunction = (function() {
return this.$$js$exported$meth$testFunction__O()
});
var $d_Ltld_test_Main$ = new $TypeData().initClass({
Ltld_test_Main$: 0
}, false, "tld.test.Main$", {
Ltld_test_Main$: 1,
O: 1,
sjs_js_JSApp: 1
});
$c_Ltld_test_Main$.prototype.$classData = $d_Ltld_test_Main$;
var $n_Ltld_test_Main$ = (void 0);
function $m_Ltld_test_Main$() {
if ((!$n_Ltld_test_Main$)) {
$n_Ltld_test_Main$ = new $c_Ltld_test_Main$().init___()
};
return $n_Ltld_test_Main$
}
$e.tld = ($e.tld || {});
$e.tld.test = ($e.tld.test || {});
$e.tld.test.Main = $m_Ltld_test_Main$;
В моем plugins.sbt
У меня тоже есть:
addSbtPlugin("ch.epfl.scala" % "sbt-web-scalajs-bundler" % "0.5.0")
Теперь в какой-то момент на сервере скрипт включается в обслуживаемый.html.
Я точно знаю, что это прекрасно работает, так как после загрузки страницы я получаю предупреждение
главный()
Как и должно быть.
Теперь я хотел добавить кнопку на сайт и ссылаться на testFunction()
,
Сгенерированный.html выглядит так:
<button name="test" type="button" class="inline" id="test" onclick="tld.test.Main().testFunction()">Test</button>
Теперь, когда я нажимаю на эту кнопку, я ожидаю, что
функции теста ()
но, к сожалению, это не так, и я не могу понять, почему.
Это довольно похоже на пример с: https://www.scala-js.org/tutorial/basic/ но для меня это не работает. Это из-за sbt-web-scalajs-bundler
что я должен сделать что-то по-другому или в чем моя проблема здесь?