从Dart调用我的JavaScript

时间:2014-08-09 17:31:00

标签: javascript dart call dart-editor

这应该很简单,但我似乎无法绕过它。

所以我有我的dartFile.dart然后我有我的javaScriptFile.js。我如何链接这两个,以便我可以从我的dartFile.dart调用我的javaScriptFile.js中声明的JavaScript函数?

我试图按照this post中提供的解释,但我觉得这对我来说太模糊了:/

编辑:这是我尝试的内容:

在我的javaScriptFile.js中,只有这个简单的函数:

function myFunction() {
  return 4;
}

在我的dartFile.dart中,只有这一小段代码:

import 'package:js/js.dart' as js;

void main() {
  print(js.context.myFunction());
}

按照我提到的帖子中的说明,我在pubspec.yaml文件中添加了js的依赖项。 基本上我确实是原问题的提问者所在 - 我可以调用基本的JavaScript函数,比如alert,但是我试着调用我在javaScriptFile.js中声明的函数,我得到了一个' NoSuchMethodError&#39 ;

1 个答案:

答案 0 :(得分:2)

你可以这样做:

  1. 确保在.dart文件之前包含JS或确保在从Dart运行脚本之前加载所有JS文件

  2. 飞镖文件的内容:


  3. import 'dart:js';
    
    void main() {
      var ret = context.callMethod('myFunction', ['a', 'b']);
      var inst = new JsObject(context['someClass'], ['instance']); 
      print(inst);
    }
    
    1. 我的JS文件:

    2. function myFunction() {
        console.log(arguments);
      }
      
      function someClass(a) {
        this.a = a;
      }
      

      这应该给你输出

      [object Arguments] // from console.log
      [object Object]    // from print()
      

      此致 罗伯特