【发布时间】:2015-11-30 02:48:46
【问题描述】:
我有一个简单的 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>元素时,我实际上观察到什么?
【问题讨论】:
标签: dom polymer shadow-dom