在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
我在这里做错了什么?
答案 0 :(得分:1)
HtmlDocument.register(String tag,Type customElementClass,{String extendsTag})doc说
没有原生支持的平台需要[nativeTagName]参数
当子类化除以下的本机类型时:
我的猜测是聚合物确实提供了这个可选参数
答案 1 :(得分:1)
@CustomTag('ext-td')
class extendedTd extends TableCellElement with Polymer, Observable {
extendedTd.created() : super.created() {
polymerCreated();
}
}
我这样做了,我的工作正常。