听Dart的javascript事件 [英] Listen to javascript events from Dart
问题描述
Dart中有没有方法来监听来自javascript库的事件?
例如jqrangeslider http://ghusse.github.io/jQRangeSlider/ 包会在有人释放滑块时发出userValueChanged事件。
是否很容易通过js / js.dart包在Dart中监听该事件?
希望在Dart中看到一些监听器的例子,它们可以监听来自javascript库的事件。
感谢 js包你可以处理几乎所有的js代码。以下是以下JavaScript代码段的dart版本:
$(#slider) .bind(valuesChanged,function(e,data){
console.log(Will be executed);
}
在Dart中:
js.scoped((){
js.context.jQuery(#slider)。bind(valuesChanged,new js.Callback.many( e,data){
print(Will be executed);
}));;
});注意,我使用 jQuery
代替
$ b $
,因为您会遇到 问题(参见 issue 2265 )。
基本上,当你在JS中使用回调函数时,你必须使用 js.Callback.many
或 js.Callback.once
来包装您的回调。有关详情,请参见管理回调生命周期。 p>
Is there a way in Dart to listen for events from javascript libraries?
For example the jqrangeslider http://ghusse.github.io/jQRangeSlider/ package emits a userValueChanged event when someone releases the slider.
Is it easy to listen for that event in Dart via the js/js.dart package?
Would love to see some examples of a listener in Dart that listens for events like this from a javascript library.
解决方案 Thanks to js package you can deal with almost all js code. Here is the dart version of the following javascript code snippet :
$("#slider").bind("valuesChanged", function(e, data){
console.log("Will be executed");
});
In Dart :
js.scoped((){
js.context.jQuery("#slider").bind("valuesChanged", new js.Callback.many((e, data) {
print("Will be executed");
}));
});
Note that I use jQuery
instead of $
because you would have issue with dart2js otherwise (see issue 2265).
Basically, when you use callback functions in JS, you have to use js.Callback.many
or js.Callback.once
to wrap your callback. See Managing callback lifetimes for more details.
这篇关于听Dart的javascript事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!