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

6

有没有办法从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 不是一个函数)
如果该函数不存在,错误将如下所示:
Uncaught Error: NoSuchMethodError: method not found: 'callMe' (receiver.callMe 不是一个函数)
该对象上的其他函数正常工作。
1个回答

5
您可以在函数调用前加上JS$前缀:
@JS()
class SomethingFancy {
  external String JS$call();
}

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


这个能和DDC一起工作吗?它抱怨JS$call不是一个函数,但是Dart2JS没有。我记得看到JS$JS$也有意义,但现在找不到了。 - Jacob Phillips

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接