如何在Dart Polymer中扩展

时间:2013-11-28 13:24:47

标签: dart dart-polymer

在Dart,我一直在努力创造一种延伸的聚合物元素。

@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

我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

HtmlDocument.register(String tag,Type customElementClass,{String extendsTag})doc说

没有原生支持的平台需要[nativeTagName]参数

当子类化除以下的本机类型时:

  • 的HtmlElement
  • SvgElement
  • AnchorElement
  • AudioElement
  • ButtonElement
  • CanvasElement
  • 的DivElement
  • ImageElement
  • InputElement
  • LIElement
  • LabelElement
  • MenuElement的
  • MeterElement
  • OListElement
  • OptionElement
  • OutputElement
  • ParagraphElement中
  • PreElement
  • ProgressElement
  • SelectElement
  • SpanElement中
  • UListElement
  • VideoElement

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

答案 1 :(得分:1)

@CustomTag('ext-td')
class extendedTd extends TableCellElement with Polymer, Observable {

  extendedTd.created() : super.created() {
    polymerCreated();
  }
}

我这样做了,我的工作正常。