хороший вопрос.Итак, прежде всего я хотел бы подчеркнуть, что текущий JS-код этого компонента Polymer на самом деле не «очень Polymer», поэтому вы взаимодействуете с DOM очень «jQuery», а не используете все преимущества библиотеки Polymer.
Как бы я предложил переписать этот код:
<button on-tap="hidePxCard">
<i>Button text</i>
</button>
<px-card
hidden$="[[hide]]">
<!-- ...content here -->
</px-card>
<div class="output"></div>
Итак, здесь мы добавили 1) обработчик событий при нажатии hidePxCard
2) переключился с двусторонней ставки наодносторонний для [[hide]]
через квадратные скобки, поэтому нет смысла использовать двухстороннее связывание.
Затем давайте настроим часть js:
<script>
Polymer({
is: 'custom-view',
properties: {
hide: {
type: Boolean,
value: false
}
},
hidePxCard: function() {
this.set('hide', !this.hide);
}
});
</script>
Не могли бы вы увидеть,как чистый код выглядит сейчас?Мы просто устанавливаем одно свойство на каждый hidePxCard
вызов.Наша цель состоит в том, чтобы нам нужно было манипулировать свойствами Polymer, которые связываются с html-атрибутами, а не манипулировать DOM напрямую.Итак, ваш элемент теперь управляется данными.
Кроме того, я предполагаю, что имеется некоторый код CSS, который скрывает что-то, когда в элементе присутствует атрибут [hidden]
.
Этоможет быть сделано внутри элемента px-card
с помощью:
<style>
:host{
display: block;
}
:host[hidden]{
display: none;
}
</style>
или настроено где-то как глобальный стиль для всего приложения (страницы).