如何在Dart lang中创建全局(在窗口上)对象? [英] How do I create a global (on the window) object in Dart lang?

查看:241
本文介绍了如何在Dart lang中创建全局(在窗口上)对象?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我想创建一个名为 Hello 的全局对象,并在该对象上添加函数 world ,所以浏览器中的任何其他JavaScript库都可以简单地使用 window.Hello.world();



在Dart lang中创建这样一个对象,我如何将它暴露在全局/放置在窗口对象中?



在普通的JavaScript中,我可以写出:

  window.Hello = {
world:function (){
console.log(Hello World!);
}
}

window.Hello.world();

但是,您如何在Dart中执行此操作?

解决方案

我在Dart-JS interop上工作。这是使用新包完成它的最简洁的方法:js / js.dart interop。

  @JS()
library your_library;

import'package:js / js.dart';

@anonymous
@JS()
类HelloObject {
外部工厂HelloObject({Function world});
external world();
}

@JS()
外部集合Hello(HelloObject v);
@JS()
外部HelloObject获取Hello;

main(){
Hello = new HelloObject(world:allowInterop((){print(Hello from dart);}));

//你也可以从Dart中调用这个对象作为额外的奖励。
//例如,您可以从Dart或Js中调用它。
/// Hello.world();
}


Let's say I want to create a global object called Hello and add the function world on that object, so that any other JavaScript library in the browser can simply call it with window.Hello.world();

How do I create such an object in Dart lang and how do I expose it / place it globally / on the window object?

In plain JavaScript, I would be able to write:

window.Hello = {
  world: function() {
    console.log("Hello World!");
  }
}

window.Hello.world();

But how do you do this in Dart?

解决方案

I work on Dart-JS interop. Here is the cleanest way to do it using the new package: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();
}

这篇关于如何在Dart lang中创建全局(在窗口上)对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆