- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道 multiple inheritance/composition 上有这个问题.但是,这个问题似乎更多地是关于如何在其他元素中重用多个现有元素的功能。显然,解决方案是混合。
我想知道,如何在不真正借用现有元素的情况下实际“装饰”现有元素。我们知道有这个 extends
可以使用属性来使用 Polymer 扩展现有元素。
所以做一个正常的<button>
表现得像 mega-button
就像附加 <button is="mega-button">
一样简单并为其编写一个组件。但事实证明,这是不可能的 extend
多个元素。所以像 extends="foo bar"
不起作用。如果我想构建一个 web 组件,它实际上可以应用于不同的元素怎么办?
例如,我不想只扩展 <button>
带有 mega-button
的元素但也可能是 <a>
元素,使其看起来和行为都像 mega-button
也?
mixin 方法在这里并没有真正的帮助(据我所知),因为除了为不同的 Web 组件提供共享逻辑之外,它们什么都不做。这意味着,您可以创建多个组件,并重用 mixin 中的逻辑(打包在 mixin 中)。
我需要的是一种创建可应用于多个元素的 Web 组件的方法。
知道如何解决这个问题吗?
更新
Addy 回答了一些处理该用例的方法。这是基于一种方法的后续问题
How to find out what element is going to be extended, while registering my own in Polymer
另一个在 Is it possible to share mixins across web components (and imports) in Polymer?
更新 2
我写了一篇文章,总结了我对 polymer 的继承和组合的经验和学习:http://pascalprecht.github.io/2014/07/14/inheritance-and-composition-with-polymer/
最佳答案
如果您只需要一个支持应用于多个元素的导入,您的元素可以包含多个元素定义,这些定义可能会或可能不会利用 Polymer.mixin
以便在您的装饰元素之间共享功能。
所以 pascal-decorator.html
可以包含 <pascal-span>
和 <pascal-button>
的 Polymer 元素定义,这两者都是来自 pascal-decorator.html
中定义的某个对象的混合逻辑。然后,您可以执行 <button is="pascal-button">
和 <button is="pascal-span">
,同时这样做的逻辑保留在同一个导入中。
另一种选择(如果你严格地想在一个自定义元素中完成这一切,imo,使这不那么干净)是做一些事情,比如检查正在扩展的元素的类型,这可以按照你 linked to 的方式完成,也可以通过检查作为元素注册过程的一部分。
一般来说,我个人更喜欢弄清楚我可能需要在可以装饰的元素之间共享什么逻辑,将该功能隔离到一个元素中,然后将它们导入到具有标签知识的专用元素中(例如 <addy-button>
、 <addy-video>
等) .
关于polymer - 如何使用 Polymer 扩展多个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24157576/
我有一个Polymer元素,并且在它的Javascript中,我试图找到它的宽度和高度,就像它在DOM中一样。我尝试了很多方法,但总是得到0。 最佳答案 ...这是对我有用的一个: 将Polymer.
如何在“polymer 3”元素中使用“polymer 2”元素?由于元素在shadow dom内部不起作用,因此以下内容不起作用。 static get template() { retur
在我的 React 项目中,我使用 ES6 模块已有一段时间了。在我的 React 组件中,我将使用 import: import {f1,f2} from "./myLib"; 在我的 polyme
我想知道是否有用于聚合物元素的CDN,因为您必须始终下载元素,并且通过CDN导入它会更方便。在Google上找不到任何内容?还有什么理由不存在它,或者仅仅是因为它太新了? 最佳答案 我现在不知道任何托
我试图在以下取自 Polymer Path 的上下文中理解主机和目标(和元素)和 Polymer Data Flow文档。 考虑下图: 现在考虑以下语句(来自同一个 documentation ):
polymer 文档具有以下两种方式绑定(bind)示例: Polymer({ is: 'custom-element', properties:
如果我想从具有聚合物的数组中创建纸张选择器,则看起来很麻烦: ... [[item
我最近安装了 nodejs,凉亭。然后,我使用以下命令安装了 polymer : npm install -g polymer 然后,我添加了 polymer 安装路径: C:\Users\\AppD
我正在尝试通过 querySelector 或等效方法获取在另一个元素中定义的自定义 Polymer 元素。我的代码如下: Polymer({ ready: function(){
我正在使用 Polymer v3 开发一个 Web 组件,并且需要在我的新组件的模板 HTML 中包含一些在旧式 Polymer 2 组件中定义的自定义元素。 由于 Polymer 3 不再支持 HT
我有两个 polymer 元件: 它们都是父元素内的子元素 ,并且每个都位于不同的文件中。 在 ,我有一个 ,里面有一些在那里通过点击事件来获取它的值。 目标是:在 另一方面,我想从具有如下 ur
任何人都可以向我指出使用 Polymer CLI 中的 Polymer 2 和 polymer-build 的教程吗?当我使用 polymer-starter-kit 中的任何示例并使用 polyme
我需要知道何时可以开始以编程方式使用我的自定义 Polymer 元素。元素还在undefined即使在我的 window.onload处理程序。是否有使用 Polymer 1.0 正确执行此操作的既定
我正在使用 Polymer Starter Kit 作为应用程序的基础。所以,这是一个路由到特定部分的单页应用程序。我的索引基本没变,你看这里https://github.com/PolymerEle
polymer 菜鸟... 我正在尝试根据 Polymer API 文档创建一个自定义元素,我的主页如下所示: Polymer
我在迁移到 Polymer 1.0 时遇到了一些问题 我的主要问题是“style-scope”和“my-element”类被应用于元素中的每个子节点。使用这样的东西时这不是问题:
图片中显示 People also search for 的部分,有一个可滚动的水平项目列表。我必须使用 polymer 做同样的事情,但找不到任何类似的东西。我已经实现了垂直列表,但不确定水平列表。
我想创建一个用户只能实例化一次的元素。 到目前为止,我能想到的最好的做法是在匿名函数中定义元素,并在发现该元素已存在时抛出错误。有没有办法让它拒绝被创建? (function(){ var sin
我有一个简单的元素,它只允许您一次选择一个本地文件,然后将所选文件显示为您可以删除的项目,如下所示: 该组件本身工作得很好,问题是我在同一页面中有另一个相同类型的组件,但在不同的父元素(和隐藏)内。如
我正在深入研究 Polymer 1.0 元素,我对计算的属性有点好奇。 例如,在 纸抽屉面板.html , … … … Polymer({ is: 'paper-
我是一名优秀的程序员,十分优秀!