如何从dart调用名为`call`的JavaScript函数

时间:2017-12-05 16:07:06

标签: dart dart-js-interop

有没有办法从Dart调用名为call()的JavaScript函数(在嵌套对象中),或者我是否必须等待Dart 2.0才能删除对call()的特殊处理?

我有一个JS代理:

@JS()
class SomethingFancy {
  external String call();
}

但由于call()可用于将对象转换为函数,因此无法访问JS对象的函数。

如果可以的话,我会在Dart中更改方法的名称,但package:js不支持:

/// By default the dart name is used. It is not valid to specify a custom     
/// [name] for class instance members.

我得到的错误是:

Uncaught Error: NoSuchMethodError: method not found: 'call$0' (J.getSomethingFancy$1$x(...).call$0 is not a function)

如果该功能不存在,则错误如下所示:

Uncaught Error: NoSuchMethodError: method not found: 'callMe' (receiver.callMe is not a function)

同一个对象上的其他函数工作正常。

1 个答案:

答案 0 :(得分:4)

您可以在call前加JS$

@JS()
class SomethingFancy {
  external String JS$call();
}

JS$可用作前缀,以允许访问与dart关键字冲突的JS名称。