Вопрос для пользователей Polymer:
Как я могу получить значение свойства, если элементы не связаны с родительским или дочерним родителем? Насколько я понимаю, цепочка слушателей - это действительно плохая идея. Можно ли указать конкретный элемент для прослушивания события?
Я знаю, что это можно сделать методом JS:
document.addEventListener('event', handle('elem'));
Но мне нужен Полимер.
Спасибо.
Plain Polymer использует шаблон медиатора, что означает, что родитель опосредует всех своих детей, и, таким образом, только родитель может получить доступ к свойствам детей с помощью привязок.
Двусторонние привязки реализуются с использованием событий, т.е. Вместо двусторонней привязки вы также можете выполнять:
<child-element property-changed="onPropertyChanged_"></child-element>
Однако, поскольку эти события не пузырятся, вы можете получить к нему доступ только в родительском компоненте.
Если вы хотите получить более глобальное государственное управление и поделиться определенным состоянием в своем приложении, вы должны взглянуть на Redux, потенциально в сочетании с полимерными связями Polymer-Redux. См. Кевин этот разговор с дополнительной информацией по этой теме.
Короче говоря, он разработан именно так.
Изолированный DOM: компонент DOM является самодостаточным (например, document.querySelector() не будет возвращать узлы в DOM компонента shadow).
Ссылка https://developers.google.com/web/fundamentals/web-components/shadowdom
Вы должны полагаться на привязку данных и события для связи между веб-компонентами, созданными на основе DOM. И, полимерные элементы являются такими веб-компонентами.
handle('elem')
?