假设我想创建一个名为Hello
的全局对象,并在该对象上添加函数world
,以便浏览器中的任何其他JavaScript库都可以使用{ {1}}
如何在Dart lang中创建这样的对象,如何在window.Hello.world();
对象上公开/放置它?
在纯JavaScript中,我可以写:
window
但你怎么在Dart做到这一点?
答案 0 :(得分:2)
我在Dart-JS互操作上工作。以下是使用新包的最简洁方法:js / js.dart interop。
@JS()
library your_library;
import 'package:js/js.dart';
@anonymous
@JS()
class HelloObject {
external factory HelloObject({Function world});
external world();
}
@JS()
external set Hello(HelloObject v);
@JS()
external HelloObject get Hello;
main() {
Hello = new HelloObject(world: allowInterop(() { print("Hello from dart"); }));
// You can also call this object from Dart as an added bonus.
// For example you could call this from Dart or Js.
/// Hello.world();
}
答案 1 :(得分:1)
我不确定它如何与对象一起使用,但如果你想为方法做到这一点,那很简单:
import 'dart:js' as js;
main() {
js.context['methodFromDart'] = doMyStuff;
}
void doMyStuff(String text) => print(text);
然后在你的Javascript中你可以自由地做:
methodFromDart("Hello world to Dart!");
你可以尝试找到一种方法来对象做类似的事情。