1

在 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

我在这里做错了什么?

4

2 回答 2

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

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

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

于 2014-10-09T07:07:56.950 回答
1

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

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

当子类化本机类型时:

  • html元素
  • SVG元素
  • 锚元素
  • 音频元素
  • 按钮元素
  • 画布元素
  • div 元素
  • 图像元素
  • 输入元素
  • LIElement
  • 标签元素
  • 菜单元素
  • 仪表元件
  • 列表元素
  • 选项元素
  • 输出元素
  • 段落元素
  • 前置元件
  • 进度元素
  • 选择元素
  • 跨度元素
  • 列表元素
  • 视频元素

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

于 2013-12-02T11:48:28.640 回答