dart - 当以Dart运行时,使用<input>元素的 “.value”可以正常工作,编译为JavaScript时失败

标签 dart

这个问题大多在其他地方回答过,但是我想我会提一下我的经验,因为Dart的人可能会对了解这个有趣的副作用感兴趣。

  enterPinDigits() {
      Element pinDigits = document.getElementById('pinDigits');
      pinDigits.value = "";

在上面,pinDigits是HTML输入元素。当我如上所述编写代码时,编辑器告诉我它无法将value识别为该元素的有效字段。

这是奇怪的部分:
该代码在Chromium / Dart环境中运行时表现良好,但是在编译为Javascript时却无法正常运行。奇怪的不一致。

最佳答案

getElementById返回Node,除非您声明它是value,否则DartEditor不能知道它具有InputElement属性。如果您将变量设置为Element类型,则它仍然没有value属性。

var pinDigits = document.getElementById('pinDigits') as InputElement;

要么

InputElement pinDigits = document.getElementById('pinDigits');

这样,您还可以获得正确的自动补全功能。

Dart2js使用类型信息进行树状摇动。由于类型注释错误,可能会丢弃错误的代码。在这种情况下,没有类型(var)会比错误的类型更好。实际上Element没错,因此它可能仍然是错误。

关于dart - 当以Dart运行时,使用<input>元素的 “.value”可以正常工作,编译为JavaScript时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24316486/

相关文章:

dart - 包含项目 : within Flutter DropdownButton, 的 map 中的返回语句 为什么以及如何工作

flutter - 当我的小部件使用字符串ID进行引用时,如何将参数传递给有状态的小部件?

Flutter Cubit 状态不离开起点(MyInitialState)

flutter - 如何在最新版本的Flutter上修复 “This requires the spread-collection experiment to be enable ”?

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

dart - flutter 中容器的 onTap 想要调用回调以及容器的 setState

firebase - 什么用例有 FirebaseUser 的 reload() 功能?

ubuntu - 从windows导入dart项目到ubuntu时的一些问题

android - 如何在flutter中将列表对象发布到cloud firestore firebase

flutter - 如何在 flutter 中将 int 转换为 Uint32