问题标签 [dart-js-interop]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
594 浏览

dart - 对于 dartjs,字母表( A 到 Z )空类实例的奇数列表是什么?

每个 dart 文件的已编译 javascript 的顶部都是这个奇怪的列表。

我扫描了代码的其余部分以寻找 .A (或任何其他字母),但没有运气。这究竟是为了什么目的?最终结果是 dart() 函数/构造函数的 AZ 实例是空类对象,但有什么用呢?

使用像/[A-Z]{1}\./我这样的正则表达式发现一些字母实例用属性装饰,然后所有 27 个字母都通过这个函数运行:

这让我更加困惑。因为那行似乎SomeObject = convertToFastObject(SomeObject);没有变化。

编辑/更新:找到了对 convertToFastObject 及其前身 dart() 类的解释 -为什么 convertToFastObject 函数让它变得更快?这是一个优化技巧。仍然给我留下一个问题,为什么 AZ 实例列表,它只是另一个优化技巧还是某种代码哈希表?

0 投票
3 回答
550 浏览

dart - 如何从函数创建对象

我正在尝试在 Dart 中为 lunr.js ( http://lunrjs.com/ ) 创建一个包装器,但是,我找不到有关如何使用thisDart js 互操作的文档。

这是我要创建的对象:

目前这就是我所拥有的。

我如何能够this从匿名函数访问?

另外,我将实际的 lunr.js 放在哪里?我只是为它制作一个包装器,因此除非必要,否则我看不出有任何理由将它放在 HTML 文件中。

编辑:

我也试过:

创建一个函数以允许使用this关键字。(仍然不确定这种语法是否正确)

JsObject然后使用该函数创建一个:

这会给我这个错误:

异常:未处理的异常:带有不匹配参数的闭包调用:函数“调用”

接下来我尝试了这个:

这给了我一个不同的错误:Exception: Illegal argument(s): object cannot be a num, string, bool, or null

这可能是因为我没有办法在以_f这种方式创建 JsObject 时调用该函数。

0 投票
1 回答
236 浏览

dart - Dart 使用带有初始参数的 jQuery 日期选择器

这有效:

因为它以 mm/dd/yyyy 的默认形式显示了一个带有日历的框,但这不会改变格式:

它像上面一样工作,但仍然是 mm/dd/yyyy。我在这里错过了什么?

0 投票
1 回答
101 浏览

javascript - JavaScript 中的 Dart 事件

我在这里有这段代码,我正在将其转换为 Dart。问题在于回调。

我在 Dart 中的代码

正确调用了停止回调,但我不知道如何处理var node = e.target.getContainer();line。e.target 返回一些东西,但接下来是什么。

附带问题:是mapa.callMethod('addLayer', [layer]).callMethod('enable', []);语法,只有一种调用javascript方法的可能方式。我觉得有点麻烦:-/

这整个 js-interop 东西有点乱。我无法自行解决,需要在每一步后再次询问。我希望当我涵盖所有互操作用例时,我将能够只使用 Dart 而忘记 JS。

0 投票
1 回答
715 浏览

javascript - 从 Dart 代码调用匿名 Javascript 函数

我正在编写一个从 JavaScript 调用的 Dart 库,完成后,Dart 需要调用位于 JavaScript 中的匿名回调函数。

JavaScript:

HTML:

镖:

JavaScript 成功调用 Dart 方法联系人,Dart 成功与 Java 后端通信,该后端以 Json 响应,现在最后一步是 Dart 调用发送给它的回调,这是它失败的地方,我不能弄清楚如何使它工作。

如果我做回调(响应),这是我得到的异常:

这也失败了:JsFunction.callMethod(callback, [response]);

0 投票
1 回答
83 浏览

dart - Angular.Dart javascript互操作错误

我的代码使用 3rd 方库有问题。当我在普通的 Dart 中使用它时,它已经可以工作了,但不适用于 Angular.Dart。我使用了 Dart 教程中的第 3 章,只是在 recipe_book.dart 中添加了我的代码,它是组件。

代码失败的地方如下图所示。在我得到之后

打破异常:对象必须是 Node、ArrayBuffer、Blob、ImageData 或 IDBKeyRange

我不知道如何摆脱这个:-(也许对 Angulart.dart 更熟悉的人可以马上回答。

任何愿意帮助的人都可以在 github 上查看代码

在此处输入图像描述

0 投票
1 回答
137 浏览

dart - 如果不包含 .dart 文件,则 Dart js-interop 不起作用

在宣布 Dart 的新策略后,我决定将 include 从

但在那种情况下,js-interop 似乎坏了。dart:js.context是空的。有什么解决方法吗?

0 投票
2 回答
265 浏览

dart - 在 Dart 中自动化 JavaScript 互操作

在我的 Dart 项目中使用第三方 JavaScript 库时,我手动浏览了该库的文档,并通过一系列繁琐的调用来迭代其属性和方法来构建 Dartcontext代码callMethod有没有人想出一种自动化的方法?

我试图首先找到一个命令行界面来内省 JavaScript 库,以便我可以自动生成 Dart 源代码。我的搜索一直不成功。

0 投票
0 回答
62 浏览

events - 为我的 Google Visualization API Wrapper 提供可重用流的最佳方式是什么?

我正在为Google Visualization / Charts API开发一个基于 Dart 的包装器,已经可以在github上查看。我为所有可用的图表创建了一个特定于图表的包装类。

现在我正在研究底层类的事件。问题是所有图表都没有共享各种事件。因此,我需要找到一种将特定事件类型分配给其相应图表的方法。我已经做的是:

  1. 我为Events api创建了一个包装器:

    /li>
  2. 我创建了一个封装类,它封装了一个事件的所有代码。代码如下所示:

    /li>
  3. 在图表中,您可以使用如下代码:

    /li>

问题如下Events接口需要一个source_visulization参数,即我要在其上注册事件的图表。但是当我使用dart:js它时,只有在我在图表上调用构造函数之后才可用,因为它通过JsObject ( jsChart = new JsObject(ctx[chartName], [element])) 创建了对象。通常我会EventWrapper在构造函数中创建实例,但由于我必须在几个类中使用事件,所以我想到了其他两种解决方案,而不是你可以在 #3 中看到的当前解决方案。

  1. 创建一个 mixin - 这实际上不起作用,因为我没有构造函数,并且我无法指定实例方法,因为它给了我一个错误:

    /li>
  2. 为看到的每个事件组合创建 BaseClasses,这将允许我共享最常见的代码。一些 BaseClass 将是:NoEvents, SelectEvent, SelectReadyEvents, SelectReadyAnimationFinishEvents, ...

你们中有人有更好的解决方案吗?或者有人可以告诉我如何解决我的问题#1?#2 已经是最好的解决方案了吗?因为我只需要结合几种方法并且只有一点重复的代码?

0 投票
1 回答
136 浏览

javascript - 在 Dart JS 互操作中引用“this”

我想在 Dart 中实现以下代码:

我的 Dart 实现如下所示:

不幸的是,运行代码时出现以下错误:

空对象没有方法“callMethod”

在以下行:

上下文["this"].callMethod("_super", []);

context["this"] 似乎为空,所以我的问题是:如何引用 Dart 中的“this”变量?

更新 1:完整的示例代码可以在 github 上找到: https ://github.com/uldall/DartCocos2dTest