- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简单的 polymer 元素:
<link rel="import" href="bower_components/polymer/polymer.html">
<dom-module id="observing-test">
<template>
<p>This is the title:</p>
<content id="top" select="#title"></content>
<p>This is the content:</p>
<content id="bottom" select="#content"></content>
</template>
<script>
Polymer( {
is: 'observing-test',
ready: function(){
console.log("Ready!");
Polymer.dom( this.$.top ).observeNodes( function( info ) {
console.log(" TOP CHANGED!", info );
});
Polymer.dom( this.$.bottom ).observeNodes( function( info ) {
console.log(" BOTTOM CHANGED!", info );
});
},
attached: function(){
console.log("Attached!");
OT = this;
}
})
</script>
</dom-module>
基本用法:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="description" content="The basic page">
<meta name="author" content="Tony Mobily">
<title>The title</title>
<link rel="import" href="test-component.html">
</head>
<body>
<observing-test>
<div id="title"><p>TITLE!</p></div>
<div id="content"><p>CONTENT!</p></div>
</observing-test>
</body>
现在,任何添加到 #top
或 #bottom
的内容都会被观察到。
那么,如何将子元素附加到 #top
<content>
元素以便触发观察者?
如果我从本地 DOM (从控制台)到达该元素: MAYBE = Polymer.dom( OT ).children[0]
(这将是 <div id="title">
,然后是 Polymer.dom( MAYBE ) .appendChild( document.createElement( 'p' ) )
,新元素将被添加到 <div>
。但是,观察者不会被触发(因为我将子级添加到 <div>
而不是 <div>
的父级,我认为这是正在观看的内容。)
所以问题:
当观察本地 DOM 中的 <content>
元素时,如何从那里追加或删除节点?基本上,我想向 <content>
的子元素添加一个额外的子元素,以便 OT.getContentChildren('#top')
返回一个额外的元素
观察时,我是否会收到直接对节点子节点之一进行更改的通知?孙辈的修改不会冒泡,对吗?当定位 <content>
元素时,我实际上观察到了什么?
最佳答案
<content>
是一个 DOM 插入点(我不会尝试详细解释它是什么,Polymer's dev guide 比我做得更好)。基本上,组件的每个轻 DOM 子级都与 select
匹配。查询<content>
节点将被插入其中。
因此,要在 <content>
中插入另一个子项节点,您必须添加一个与其 select
匹配的子节点查询组件的 light DOM。
为此,您应该更改 select
查询以 ID 以外的其他内容(即类或属性)为目标,如下所示:
在元素的 dom-module 中:
<content id="top" select=".title"></content>
用法:
<observing-test id="ot">
<p class=".title">TITLE!</p>
<div id="content"><p>CONTENT!</p></div>
</observing-test>
var newTitleNode = document.createElement( 'p' );
newTitleNode.className = "title";
Polymer.dom( this.$.ot ).appendChild( newTitleNode );
observeNodes
用于检测本地 DOM 插入点中节点的添加/删除。您在这里所做的是将一个节点附加到一个轻量 DOM 节点,该节点本身已插入 content
中。插入点,您不是直接插入另一个节点。我相信这就是您没有收到通知的原因。希望这对您有帮助,某个地方的人可能可以比我更好地解释这一点。
关于dom - 将分布式子项附加到 Polymer 中的 <content> 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33990745/
我有一个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-
我是一名优秀的程序员,十分优秀!