1

我想将带有 dart 的事件处理程序添加到触发 js 事件的 div 中,所以我通过 jquery 执行此操作,
当从 div 触发事件时,回调方法按预期调用,但是 div 是 div 的父级,触发事件的,被删除。

它们完全从 dom 中删除。

js.scoped(() {
   js.context.$(new js.Callback.once(($) {
      $('#mySlider').on('change', new js.Callback.many(() {
           print('Element changed');
      }));
    }));
});

有人知道为什么 dart 或 jquery 会这样做吗?或者两者谁负责?

4

1 回答 1

0

在 dartium 中,以下代码应该可以工作:

js.context.$('#mySlider').on('change', new js.Callback.many((_) {
  print('Element changed');
}));

使用dart2js(也使用$)你有两个选择:

  • 编译--global-js-name选项以更改$为其他内容。
  • $.noConflit()在加载 dart 脚本以释放jQuery$使用之前调用,并在上面的代码片段中更改为。js.context.$js.context.jQuery

对您的代码的一些评论:

  • 不再需要使用js.scoped
  • 回调是用一个参数调用的,所以即使你不使用它也必须定义它(这就是为什么我使用 a_来处理我不在乎的这个参数)
于 2013-06-25T17:18:45.870 回答