在Dart中有没有办法从javascript库中侦听事件?
例如,当有人释放滑块时,jqrangeslider http://ghusse.github.io/jQRangeSlider/包会发出userValueChanged事件。
通过js / js.dart包在Dart中监听该事件是否容易?
很想在Dart中看到一些侦听器的例子,它会从javascript库中侦听这样的事件。
答案 0 :(得分:4)
感谢js package,您可以处理几乎所有的js代码。以下是以下javascript代码段的dart版本:
$("#slider").bind("valuesChanged", function(e, data){
console.log("Will be executed");
});
在达特:
js.scoped((){
js.context.jQuery("#slider").bind("valuesChanged", new js.Callback.many((e, data) {
print("Will be executed");
}));
});
请注意,我使用jQuery
代替$
,因为否则会遇到 dart2js 的问题(请参阅issue 2265)。
基本上,当你在JS中使用回调函数时,你必须使用js.Callback.many
或js.Callback.once
来包装你的回调。有关详细信息,请参阅Managing callback lifetimes。