Polymer-Dart 1.0继承自定义元素

时间:2015-08-28 16:31:37

标签: dart polymer dart-polymer

成功设置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>,但似乎没有任何效果。

想法?

2 个答案:

答案 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标签。