【问题标题】:Listen to javascript events from Dart从 Dart 监听 javascript 事件
【发布时间】:2013-04-05 20:09:05
【问题描述】:

Dart 中有没有办法监听来自 javascript 库的事件?

例如,当有人释放滑块时,jqrangeslider http://ghusse.github.io/jQRangeSlider/ 包会发出 userValueChanged 事件。

通过 js/js.dart 包在 Dart 中监听该事件是否容易?

希望看到 Dart 中的一些侦听器示例,该侦听器从 javascript 库中侦听此类事件。

【问题讨论】:

    标签: javascript dart


    【解决方案1】:

    感谢js package,您几乎可以处理所有的 js 代码。这是以下 javascript 代码 sn-p 的 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.manyjs.Callback.once 来包装你的回调。详情请见Managing callback lifetimes

    【讨论】:

    • 当我使用 jQuery 执行您建议的操作时,我收到此错误:未为类 'Proxy' 定义方法 'jQuery' .有什么建议么? ps:如果我使用 $ 会出现同样的错误 :-(
    • 这只是一个警告,将在接下来的几天内消失。但是代码应该可以工作。
    • 代码不工作。如果您能指出正确的方向,我将发布作为答案,这将是非常棒的。谢谢。
    • 你不会忘记加载 jquery.js 吗?
    • 我愿意,详情如下:stackoverflow.com/questions/18639922/…
    猜你喜欢
    • 1970-01-01
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多