2

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

<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”元素的正确方法是什么?

4

1 回答 1

2

您应该添加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');
于 2013-12-04T18:30:55.130 回答