【问题标题】:Current means to extend custom element in Dart Polymer?当前在 Dart Polymer 中扩展自定义元素的方法是什么?
【发布时间】: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。例如&lt;shadow&gt; 是如何应用于放置超元素的内容的。
  • 是的,这是我的一个拼写错误,把一切都搞砸了。发现此问题后,我曾考虑删除此问题,但认为它的相关性似乎值得保留。

标签: dart dart-polymer


【解决方案1】:

在导入基本元素的 Dart 文件时(在我的实际代码中,而不是上面的示例中),我显然有一个错字,这导致了其他所有问题。这仍然是扩展自定义元素的正确方法,子元素将使用基本元素的模板。有时,在编程时,最小的事情可能会导致最头疼的事情......

【讨论】:

  • 我对“改用继承”的建议很感兴趣。有没有使用继承而不是扩展的例子?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-06
  • 2013-12-14
  • 1970-01-01
  • 1970-01-01
  • 2014-09-20
  • 2014-09-29
相关资源
最近更新 更多