2017-08-22 11 views
2

のは、私がHelloと呼ばれるグローバルオブジェクトを作成し、ブラウザ内の他のJavaScriptライブラリは、単に私がダートでこのようなオブジェクトを作成するにはどうすればよいwindow.Hello.world();Dart langでグローバル(ウィンドウ上)オブジェクトを作成するにはどうすればよいですか?

でそれを呼び出すことができるように、そのオブジェクトに機能worldを追加したいとしましょう私はそれを公開する/グローバルに/ windowオブジェクトに配置する方法は?プレーンなJavaScriptで

、私は書くことができるようになります。

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

window.Hello.world(); 

しかし、あなたはダートでこれをどのように行うのですか?

答えて

1

私はそれがオブジェクトを操作する方法を確認していないが、あなたはメソッドのためにそれを行うにしたい場合は、それは非常に簡単です:あなたの中に

import 'dart:js' as js; 

main() { 
    js.context['methodFromDart'] = doMyStuff; 
} 

void doMyStuff(String text) => print(text); 

そして、あなたが自由にJavascriptを:

methodFromDart("Hello world to Dart!"); 

オブジェクトと同様のことをする方法を見つけることができます。

+1

私はこのソリューションをデバッグ目的で使用しました。ありがとうございました! –

2

私はDart-JS interopで作業します。新しいパッケージ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(); 
} 
関連する問題