如何在Dart js-interop中为“Proxy”类定义一个方法?

时间:2013-04-17 03:22:21

标签: dart dart-js-interop

我目前正在调用一个名为Bootstrap Context Menu的基于jQuery的插件。

为了调用它,我需要使用Javascript Interop library。但是当我从中调用jQuery方法时,我收到以下警告:

The method 'jQuery' is not defined for the class 'Proxy'

代码段:

  js.scoped(() {
    js.context.jQuery('#canvas').contextmenu();
  });

在一些dart / js-interop更新之前没有发生这种情况。什么是摆脱这种警告的正确方法?

1 个答案:

答案 0 :(得分:4)

您收到此警告是因为当类定义noSuchMethod()(在http://dartbug.com/10016报告时)新分析器似乎没有意识到选项报告'没有此类成员'警告。如果您切换回旧版分析器,则不应再看到此警告。

那说如果你想使用新的分析器并摆脱这个警告,你可以使用这样的数组符号:

js.context["jQuery"]('#canvas')["contextmenu"]();

但是:

  • 方法调用的可读性较低。
  • 方法调用的效率较低,因为完成了2次操作(f = js.context["jQuery"]后跟f('#canvas'))而不是1次js.context.jQuery('#canvas')