cor*_*ath 6 global-variables dart dart-js-interop
假设我想创建一个名为的全局对象Hello
并world
在该对象上添加函数,以便浏览器中的任何其他 JavaScript 库都可以简单地调用它window.Hello.world();
如何在 Dart lang 中创建这样的对象,以及如何将其公开/全局放置/放在window
对象上?
在纯 JavaScript 中,我将能够编写:
window.Hello = {
world: function() {
console.log("Hello World!");
}
}
window.Hello.world();
Run Code Online (Sandbox Code Playgroud)
但是你如何在 Dart 中做到这一点?
小智 6
我从事 Dart-JS 互操作。这是使用新包:js/js.dart 互操作的最简洁方法。
@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();
}
Run Code Online (Sandbox Code Playgroud)
我不确定它如何与对象一起工作,但如果您想对方法执行此操作,则非常简单:
import 'dart:js' as js;
main() {
js.context['methodFromDart'] = doMyStuff;
}
void doMyStuff(String text) => print(text);
Run Code Online (Sandbox Code Playgroud)
然后在你的 Javascript 中你可以自由地做:
methodFromDart("Hello world to Dart!");
Run Code Online (Sandbox Code Playgroud)
您可以尝试找到一种方法来对对象执行类似的操作。
归档时间: |
|
查看次数: |
1361 次 |
最近记录: |