Я только начал изучать Полимер, и я работал над их документами. Я создал очень простой Hello World элемент, который, кажется, работает для меня:Полимер. Внутренние элементы, видимые в браузере Chrome.
<link rel="import" href="/path/to/polymer/polymer.html">
<dom-module id="test-element">
<template>
<style>
p {
color: blue;
}
</style>
<p>Hello [[name]]!</p>
</template>
<script>
Polymer({
is: 'test-element',
properties: {
name: String
}
});
</script>
</dom-module>
я могу импортировать и использовать элемент на успешно странице:
<link rel="import" href="/path/to/my/test-element.html">
<test-element name="World"></test-element>
Это правильно показывает синий «р ', говорящий «Hello World!», и я также вижу, что стилизация CSS на элементе правильно не сливается с другими элементами «p» на странице вне элемента.
Пока все хорошо. Однако в документах, которые я читал, одним из преимуществ веб-компонента является то, что его внутренние детали реализации скрыты от основного дерева DOM. Их приведенный пример был элементом «видео», в котором есть другие элементы внутри него, но вы не можете напрямую их запросить.
В инструментах разработчика Chrome, однако, я могу видеть элемент «p» в дереве DOM внутри моего «тестового элемента». Я могу даже запросить его с JQuery, который я думал, что я не должен был быть в состоянии сделать:
$("test-element p")
// Produces: [ <p class="style-scope test-element">Hello World!</p> ]
я делаю что-то неправильно, или я не понял, как Polymer работает?
Можете ли вы попробовать этот же тест после включения 'shadow-dom'. [Здесь] (https://www.polymer-project.org/1.0/docs/devguide/settings) - как это сделать. – a1626
Удивительный, который сработал, я больше не могу запрашивать внутренние элементы в браузерах, поддерживающих теневую DOM. Если бы вы могли опубликовать свой комментарий в качестве ответа, я подниму его и приму. – dsw88