javascript - 如何继承手动扩展的 polymer 元素的样式?

标签 javascript inheritance polymer

我想创建新的 polymer 元素来扩展 native HTML 元素(比方说 div ) ,所以我可以使用 <div is="my-div"> ,但继承了另一个 Polymer 元素 ( my-list ) 的行为。 我通过以下方式实现了它:

<polymer-element name="my-list">
    <template>
        <style>
            :host {
                background-color: #EEE;
                display: block;
                border: 1px solid black;
            }
        </style>
        <content></content>
    </template>
    <script>
        Polymer('my-list', {
            color: "red",
            ready: function() {
                console.info("my-list is ready!");
                this.children[0].style.color = this.color;
            }
        });
    </script>
</polymer-element>
<polymer-element name="my-div" extends="div">
    <script>
        (function() {
            var myListProto = Polymer.getRegisteredPrototype("my-list");
            var myDivProto = Polymer.extend({}, myListProto);
            myDivProto.color = "blue";
            Polymer('my-div', myDivProto);
        }());
    </script>
</polymer-element>

工作中的 jsFiddle 是 here .

问题是 my-list样式不适用于my-div .

有什么办法可以继承它们吗?或者我应该以其他方式进行此类扩展?

最佳答案

在我看来,你在这里所做的是一种混合技术。您有两个类不在同一继承链上,但您希望它们共享 API。

你为原型(prototype)做了 mixin 部分,你也可以为模板做这件事,但有各种细节。

这是一个 JsBin,展示了我将如何做到这一点:http://jsbin.com/vuru/1/edit

我更直接地将其描述为混合问题,这使我更容易处理。

我使用的关键信息:

  • 如果您定义 registerCallback()在您的 Polymer 原型(prototype)中,它会在注册时回调,原型(prototype)为 this以及对 <polymer-element> 的引用作为一个论点。

  • 您可以覆盖 fetchTemplate自定义模板选择

  • 如果您没有将模板安装到 <polymer-element>之前registerCallback()有时,您必须手动调用 Shadow-dom CSS polyfill 引擎(即: Platform.ShadowCSS.shimStyling(...) )。

关于javascript - 如何继承手动扩展的 polymer 元素的样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21551819/

相关文章:

javascript - 重组 "withReducer": justification of async reducer function call

javascript - 我可以更改网站中 Facebook 登录按钮的大小吗?

c++ - C2664 将子类转换为模板父类时

c++ - 复制构造函数不被继承

javascript - 如何遍历列表并仅计算数字?

javascript - 使用 jquery 加载页面时出现的小问题

c++ - 为什么在这段代码中调用虚方法时会出现段错误?

html - Polymer 无法在 IE 11 上使用模板重复生成 HTML 表格

javascript - 网络组件测试器 : tests succeed in Chrome but fail in Firefox

polymer - polymer 1.0“数组样式”路径访问器,可替代表达式中的括号表示法