在Dart

时间:2017-04-26 16:14:53

标签: dart dart-html dart-js-interop

我知道我的问题不是新问题,但我在这里和互联网上找到的所有解决方案都不起作用:(或者,我做错了。

我需要在Dart和JS之间建立一种沟通,我很乐意使用事件,因为这个想法看起来很简洁。

所以,我尝试了这个教程:https://dart.academy/easy-dart-js-interopt/

我的JS代码:

var customEvent = new CustomEvent("fromJavascriptToDart");
window.onload = document.dispatchEvent(customEvent);
document.addEventListener("fromJavascriptToDart", test, false);
function test() {
    console.log("Listening");
}

调度事件,因为我在控制台日志中看到了Listening。

但是当谈到飞镖时,没有任何工作。

我尝试了以下方法,一切都失败了:

document.on['fromJavascriptToDart'].listen((CustomEvent event) {
                    print("HEY! I'M LISTENING!");
                });
window.on["fromJavascriptToDart"].listen((e) => print( "HEY! I'M LISTENING!"));
window.on['foo'].add((e) => print(e.detail)); //This is not working, as there is no add method in Stream Event anymore
@Listen('fromJavascriptToDart')
    void eventTest(){
        print("HEY! I'M LISTENING!");
    }

任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:2)

DartPad example

document.on['fromJavascriptToDart'].listen((CustomEvent event) {
  print("HEY! I'M LISTENING!");
});

工作正常。

  • @Listen()是特定于聚合物的
  • add不存在(listen应如上所示)
  • 该事件似乎无法到达window,但我确信这在纯JS中的表现相同。