在Dart中,我一直在尝试创建一个extends的聚合物元素。

@CustomTag('deckname-td-item')
class DecknameTdItemElement extends TableCellElement with Polymer, Observable {
  @published String item;

  DecknameTdItemElement.created() : super.created();

  void wordFileClicked(Event e, var detail, Node target) {
    String deckName =  $['deckAnchor'].text;
    dispatchEvent(new CustomEvent('decknameclicked', detail: deckName));
  }
}

对应的html:

<polymer-element name="deckname-td-item" extends="td">
<template>
  <style>
    a {
     font-weight: bold;
    }
  </style>
  <a id='deckAnchor' href="#" on-click="{{wordFileClicked}}">{{item}}</a>
</template>
<script type="application/dart" src="deckname_td_item.dart"></script>
</polymer-element>

用法:

<td is="deckname-td-item" item="{{wordFile}}"
   on-decknameclicked="{{deckNameChanged1}}"></td>

在Dartium中一切正常,并且在没有任何警告的情况下进行编译,但是当我运行构建的输出时,我得到:
Uncaught Unsupported operation: extendsTag does not match base native class

我在这里做错了什么?

最佳答案

htmlDocument.register(String tag,type customElementClass,{String extendedTag})doc说

没有本地支持的平台需要[nativeTagName]参数

当子类化本机类型时,除:

  • HtmlElement
  • SvgElement
  • AnchorElement
  • AudioElement
  • ButtonElement
  • CanvasElement
  • DivElement
  • ImageElement
  • InputElement
  • LIElement
  • LabelElement
  • MenuElement
  • MeterElement
  • OListElement
  • OptionElement
  • OutputElement
  • ParagraphElement
  • 前元素
  • ProgressElement
  • SelectElement
  • SpanElement
  • UListElement
  • VideoElement

  • 我的猜测是聚合物确实提供了这个可选参数

    10-01 21:20