我正在尝试创建一些自定义元素,这些元素都使用Polymer和Dart扩展单个自定义元素。遵循Seth Ladd的G +帖子的指示(虽然过时且不受维护,但仍然是我可以找到的用于扩展自定义[非DOM]元素的唯一参考):
https://plus.google.com/+SethLadd/posts/7Ed4GUWZB26
这是我正在尝试做的事情类型的精简示例代码:
基本元素HTML:
<link rel='import' href='packages/polymer/polymer.html'>
<polymer-element name='base-element'>
<template>
... stuff here relating to template ...
</template>
<script type='application/dart' src='base-element.dart'></script>
</polymer-element>
基本元素Dart:
import 'package:polymer/polymer.dart';
@CustomTag('base-element')
class BaseElement extends PolymerElement {
BaseElement.created() : super.created();
... other base class stuff here ...
}
第一个自定义子类元素HTML:
<link rel='import' href='packages/polymer/polymer.html'>
<link rel='import' href='base-element.html'>
<polymer-element name='sub-element-1' extends='base-element'>
<script type='application/dart' src='base-element.dart'></script>
</polymer-element>
第一个自定义子类元素Dart:
import 'package:polymer/polymer.dart';
import 'base-element.dart';
@CustomTag('sub-element-1')
class SubElement1 extends BaseElement {
SubElement1.created() : super.created();
... other subclass stuff here ...
}
我遇到的主要问题是Dart编辑器给我的错误(在运行时):
“打破异常:NotSupportedError:类型'子元素-1'的注册失败。'extends'中指定的标记名称是自定义元素名称。请改用继承。”
编辑器似乎不喜欢子元素HTML中的 extends ='base-element'部分。但是如果你拿出那个部分,即使Dart代码确实使用继承,基本元素的模板化HTML也会被忽略。所以,最后我对这篇文章的问题是:
您目前如何创建扩展其他自定义元素的自定义元素,以便他们使用基本元素的模板?
非常感谢任何帮助和/或信息,并提前感谢。
答案 0 :(得分:1)
我在导入基本元素的Dart文件时显然有一个拼写错误(在我的实际代码中,而不是上面的例子中),这会丢掉所有其他内容。这仍然是扩展自定义元素的正确方法,子元素将使用基本元素的模板。有时,最小的事情会在编程时引起最大的麻烦......