在Dart中将子项添加到SelectElement

时间:2013-11-12 12:38:41

标签: dart dart-html dart2js

我正在创建一个(非常大的)选择元素,需要在单个页面上的多个位置添加。我没有为每个实例重新创建它,而是制作一个原型,然后为每个实例对其进行深度克隆,并为新实例添加一些新属性。

Dart中的所有内容都按预期工作,但在将其编译为JavaScript时失败。

以下是重现问题的最低步骤:

<!DOCTYPE html>

<html>
  <head>
    <title>test</title>
    <script type="application/dart">
        import "dart:html";

        main()
        {
          List<String> languages = ["Japan", "Ireland", "Spain"];
          SelectElement langSelect = new SelectElement();
          for (int i = 0; i < languages.length; i++) {
            OptionElement option = new OptionElement();
            option.text = languages[i];    

            print("Before Assigning child");
            langSelect.children.add(option);
            print("After Assignment");
          }
        }
      </script>
    <script src="packages/browser/dart.js"></script>
  </head>
  <body>   
    <p id="text">Test</p>
  </body>
</html>

预期输出为“在分配子项”和“分配后”三次打印。在Dart中运行时就是这种情况。编译成JavaScript后,我打印出“Before Assigning child”,然后在Dartium中运行时出现以下错误:

Uncaught Error: Assertion failed shadow_dom.debug.js:1437
    assert shadow_dom.debug.js:1437
    assertIsNodeWrapper shadow_dom.debug.js:2592
    mixin.appendChild shadow_dom.debug.js:2780
    VG.h html_dart2js.dart:7928
    E2 test.html.0.dart:17
    Iq test.html_bootstrap.dart:11
    aX.vV isolate_helper.dart:248
    Rq isolate_helper.dart:66
    (anonymous function) test.html_bootstrap.dart.js:4350
    init.currentScript test.html_bootstrap.dart.js:4330
    (anonymous function) test.html_bootstrap.dart.js:4344
    (anonymous function)

Dart编辑器:版本0.8.7_r29341 Dart SDK:版本0.8.7.0_r29341

1 个答案:

答案 0 :(得分:0)

我通过将Dart编辑器更新到版本0.8.10_r30036,将Dart SDK更新到版本0.8.10.6_r30036并运行pub更新来实现此功能。