成功设置0.17-dev-interop-reverse Polymer-Dart库后,我终于能够在Dart中编写Polymer 1.0应用程序了。 Yeyyyyyyy!11 谢谢你的帮助!
但是,还有另一个问题出现了。如何从自定义元素继承。例如。我想要一个所有实际元素都继承自的BasePage元素。
一些代码:
base_page.html
<dom-module id="base-page">
<template>
Yep, thats some content.
</template>
</dom-module>
base_page.dart
@HtmlImport('base_page.html')
library test.page;
import 'dart:html';
import 'dart:js';
import 'package:polymer/polymer.dart';
import 'package:web_components/web_components.dart' show HtmlImport;
//@jsProxyReflectable
@PolymerRegister('base-page')
class BasePage extends PolymerElement {
factory BasePage() => new Element.tag('base-page');
BasePage.created() : super.created();
}
test_page.html
<dom-module id="test-page">
<template>
<shadow></shadow>
Content of an actual page.
</template>
</dom-module>
test_page.dart
@HtmlImport('test_page.html')
library test.app;
import 'dart:html';
import 'dart:js';
import 'package:polymer/polymer.dart';
import 'package:web_components/web_components.dart' show HtmlImport;
import 'package:test/base_page.dart';
//@jsProxyReflectable
@PolymerRegister('test-page')
class TestPage extends BasePage {
factory TestPage() => new Element.tag('test-page');
TestPage.created() : super.created();
}
我之前使用Polymer 0.5已经完成了很多工作,并且继承从来就不是问题,但由于某些原因,我没有得到显示<base-page>
的内容(Yep, thats some content.
是丢失)。
我试图将<shadow>
移到<template>
之外,但它不起作用。我还尝试将extends='base-page'
和extendsTag: 'base-page'
添加到<test-page>
,但似乎没有任何效果。
想法?
答案 0 :(得分:1)
在Polymer.js 1.0中,只支持扩展本机元素,我很确定Polymer.dart 0.17如果在Polymer.js 1.0中不支持,则不能支持。
此功能似乎计划用于以后的Polymer.js版本。 目前最接近的是嵌入而不是扩展。
答案 1 :(得分:1)
新聚合物仅支持扩展原生元素https://www.polymer-project.org/1.0/docs/devguide/registering-elements.html#type-extension。在聚合物飞镖中,这实际上在某些情况下有效,但你仍然需要复制扩展你的基本元素的每个元素的dom-module标签。