【问题标题】:Custom Polymer element extending AElement in Dart在 Dart 中扩展 AElement 的自定义聚合物元素
【发布时间】:2013-12-04 18:16:18
【问题描述】:

我想创建自定义的 Polymer 元素“ab-btn”,它扩展了“a”元素。它应该用作:

<ab-btn href="http://www.gooogle.com">Google</ab-btn>

我的聚合物元素的html声明看起来像(脚本列在最后,因为我想在一个文件中声明更多元素):

<polymer-element name="ab-btn" extends="a">
  <template>
    <content></content>
  </template>
</polymer-element>

<script type="application/dart" src="ab-elements.dart"></script>

元素的 dart 脚本如下:

import 'package:polymer/polymer.dart';
import 'dart:svg';

@CustomTag('ab-btn')
class AbBtn extends AElement {
  AbBtn.created() : super.created();

  var inputMethodContext;
}

当我尝试使用这个元素时,我总是得到错误:

#13     _ZoneDelegate.run (dart:async/zone.dart:417)
#14     _CustomizedZone.run (dart:async/zone.dart:627)
#15     initPolymer (package:polymer/src/loader.dart:37:33)
#16     main (package:polymer/init.dart:23:22)


Exception: InvalidCharacterError: Internal Dartium Exception
  undefined (undefined:0:0)

扩展“a”元素的正确方法是什么?

【问题讨论】:

    标签: dart dart-polymer


    【解决方案1】:

    您应该添加 with Polymer, Observable

    @CustomTag('ab-btn')
    class AbBtn extends AElement with Polymer, Observable {
      AbBtn.created() : super.created() {
        super.polymerCreated(); // <== also important for elements that extend DOM elements
      }
    }
    

    当你使用元素时

    <a is="ab-btn" href="http://www.gooogle.com">Google</a>
    

    或通过代码创建元素:

    var elm = new Element.tag('a', 'ab-btn');
    

    【讨论】:

    • 像魅力一样工作,感谢您的回答。您只需要确保您在聚合物元素部分中扩展的内容与您在代码中扩展的元素相同
    猜你喜欢
    • 1970-01-01
    • 2013-10-20
    • 1970-01-01
    • 2015-11-19
    • 1970-01-01
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多