标签: dart-js-interop

将Dart函数公开给javascript

我有点像飞镖,并试图通过在其中编写一些库函数来弄湿我的脚.

虽然我从dart调用javascript函数没有问题,但我希望能够从javascript调用dart函数,但到目前为止,我没有太多喜欢.

例如,我希望能够从dart中公开一些基本功能,例如:

main() {
  String foo() {
    return "bar!";
  }

  js.scoped(() {
    js.context.foo = foo;
  });
}
Run Code Online (Sandbox Code Playgroud)

然后能够从javascript中调用它们,如下所示:

<script>
  window.onload = function() {
    alert("foo() = " + foo());
  }
</script>
Run Code Online (Sandbox Code Playgroud)

这样的事情甚至可能吗?

dart dart-js-interop

13
推荐指数
1
解决办法
3249
查看次数

dart:js和js包之间有什么区别?

在Dart文档中的任何地方,建议使用js包进行javascript互操作.

但是,我最近发现dart:jsSDK中存在的包似乎具有相似(但不相同)的接口.

这些包装之间有什么区别吗?它们具有相同的功能吗 推荐哪一个?

dart dart-js-interop

11
推荐指数
1
解决办法
885
查看次数

如何从Dart调用jQuery函数?

这是jQuery中的典型情况:

$(".myClass").myFunction({
    aKey: 'some value'
});
Run Code Online (Sandbox Code Playgroud)

你怎么称呼dart:js?

文件是一个神秘的,而类似的问题,我发现这里似乎过时了.

dart dart-js-interop

9
推荐指数
1
解决办法
4024
查看次数

有没有更好的方法来使用新的js 0.6.0包从JS调用Dart类的方法?

index.html(头)

<script>
  var callDartMethod = function(dartObject) {
    return dartObject.fullName();
  }
</script>
Run Code Online (Sandbox Code Playgroud)

index.dart

import 'package:js/js.dart';

@Js() // about to being changed to @JS
external String callDartMethod(p);

main() {
  final p = Person.create(firstName: 'Günter', lastName: 'Zöchbauer');
  print(callDartMethod(p)); // indirect call from JS
  // print(p.fullName()); // call from Dart directly
}

@Js() // about to being changed to @JS
class Person {
  external String get firstName;
  external set firstName(String firstName);

  external String get lastName;
  external set lastName(String lastName);

  external Function get fullName;
  external …
Run Code Online (Sandbox Code Playgroud)

dart dart-js-interop

7
推荐指数
1
解决办法
521
查看次数

如何通过JS -Dart interop从JavaScript访问`this`?

我需要this从Dart函数访问JavaScript对象.我正在通过Dart-JS interop向JavaScript对象添加一个新方法.我需要从Dart中定义的方法访问JavaScript对象上的属性.

dart dart-js-interop

6
推荐指数
1
解决办法
330
查看次数

将Dart类和函数导出到javascript

如果我想使用Dart创建一个js库,我如何导出Dart类和函数以便在javascript中使用?

是否有像scala.js类似的内容?

@JSExport
class Hello{
    num x = 0
    Hello(this.x)
}
Run Code Online (Sandbox Code Playgroud)

因此,在javascript中,用户可以将其实例化为var hi = new Hello(1)

dart dart-html dart-js-interop

6
推荐指数
1
解决办法
242
查看次数

如何在 Dart lang 中创建全局(在窗口上)对象?

假设我想创建一个名为的全局对象Helloworld在该对象上添加函数,以便浏览器中的任何其他 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 中做到这一点?

global-variables dart dart-js-interop

6
推荐指数
2
解决办法
1361
查看次数

如何从dart调用名为`call`的JavaScript函数

有没有办法call()从Dart 调用一个名为(在嵌套对象中)的JavaScript函数,还是必须等待call()可能会删除特殊处理的Dart 2.0 ?

我有一个JS代理:

@JS()
class SomethingFancy {
  external String call();
}
Run Code Online (Sandbox Code Playgroud)

但是,由于call()可以将对象转换为函数,因此无法访问JS对象的函数.

如果可以,我会在Dart中更改方法的名称,但不支持package:js:

/// By default the dart name is used. It is not valid to specify a custom     
/// [name] for class instance members.
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

Uncaught Error: NoSuchMethodError: method not found: 'call$0' (J.getSomethingFancy$1$x(...).call$0 is not a function)

如果该函数不存在,则错误如下所示:

Uncaught Error: NoSuchMethodError: method not found: 'callMe' (receiver.callMe is not a function)

同一个对象上的其他函数工作得很好.

dart dart-js-interop

6
推荐指数
1
解决办法
292
查看次数

dart:js 在调用 promiseToFuture 时出错 - NoSuchMethodError: 试图调用一个非函数,例如 null: 'jsPromise.then'

我正在尝试等待自定义的全局 JavaScript 函数:

  var promise = js.context.callMethod('performAuthenticationInNewWindow', [uri.toString()]);
  print(promise);
  var qs = await promiseToFuture(promise);
Run Code Online (Sandbox Code Playgroud)

打印以下内容:

[object Promise]
NoSuchMethodError: tried to call a non-function, such as null: 'jsPromise.then'
Run Code Online (Sandbox Code Playgroud)

dart-js-interop flutter flutter-web

6
推荐指数
1
解决办法
748
查看次数

如何在Dart中制作window.prompt?

我使用Dart制作一些应用程序,我有一个简单的问题.我没有在dart:html库中找到提示对话框.我发现只有警报和确认对话电话,但那不是我需要的.我尝试过Dart api的其他一些可能性,但没办法做到这一点.我认为应该有类似于模态对话框或Dart自己的提示对话框.我知道,modal在这里,但它只在弹出窗口中加载另一个文件.

有人能帮助我吗?


更新:实际上,我找到了一个解决方案.它是dart:js库中的JavaScript仿真:

var password=context.callMethod('prompt',['Password','']);
Run Code Online (Sandbox Code Playgroud)

这是一个很好的解决方案,但我认为,必须有比模拟JavaScript更好的东西.


更新2:因为在飞镖规范的提示对话框中的不足,飞镖API和飞镖图书馆这里是谷歌代码问题跟踪的错误,让我们出演的bug,如果你认为提示是spec重要,或者如果你对此有何评论有任何其他的想法,如何以现代的方式做(你可以尝试提出像内置的模态对话框的例子).或者只是分享它,如果您认为提示/模态对话框实现也应该在现代编程语言中...


更新3:现在我们正在讨论新的模态警报,确认和提示对话框,这些对话框可以在Polymer.dart库中.是谷歌代码问题跟踪器的增强,让我们出演的bug,如果你是该对话框的现代模式的形式,或讨论,如果你知道如何做的更好?

dart dart-html dart-js-interop

5
推荐指数
1
解决办法
1524
查看次数