2017-04-26 30 views
1

我知道,我的问题是不是新的,但所有的解决方案,我在这里和在网上查到不工作:(或者说,我做的事情完全错误听JS自定义事件。在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!"); 
    } 

任何帮助主要是赞赏。

+0

'document.on [ 'fromJavascriptToDart']听((CustomEvent的事件){ 打印( “嘿,我听!”); });'工作正常。 https://dartpad.dartlang.org/9cc2ecbe7a0b6479c56de882566982c9 最后一个例子看起来像聚合物。 –

+0

其实,我没有看到飞镖的任何日志。我没有看到“嘿,我听到了!”是否有可能,我从错误的地方听它?我有一个应用程序类,开始与应用程序初始化。在那里我添加了这些听众。 –

+1

哦,停下来。一切都在工作。你的答案工作起来很神奇,我看到很多“嘿!我聆听!”在控制台中。尽管如此,我还是为此挣扎了几个小时。你会介意加入这个答案吗,所以我可以标记是一个解决方案? –

回答

2

DartPad example

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

工作正常。

  • @Listen()是聚合物特定
  • add不存在(listen如上图应使用)
  • 事件似乎并没有达到window,但我敢肯定,这将具有相同的行为在纯JS中。