【发布时间】:2014-09-21 06:40:06
【问题描述】:
我正在尝试使用 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: 类型'sub-element-1'的注册失败。'extends'中指定的标记名称是自定义元素名称。改用继承。”
编辑器似乎不喜欢子元素 HTML 中的 extends='base-element' 部分。但是如果你去掉那部分,基本元素的模板化 HTML 将被忽略,即使 Dart 代码确实使用了继承。所以,最终我对这篇文章的问题是:
您目前如何创建扩展其他自定义元素的自定义元素,以便它们使用基本元素的模板?
任何帮助和/或信息将不胜感激,并提前致谢。
【问题讨论】:
-
核心元素和纸张元素使用扩展元素。它们是 Polymer.js,但大多数情况也适用于 Polymer.dart。例如
<shadow>是如何应用于放置超元素的内容的。 -
是的,这是我的一个拼写错误,把一切都搞砸了。发现此问题后,我曾考虑删除此问题,但认为它的相关性似乎值得保留。
标签: dart dart-polymer