javascript - Polymer 2 - 单击另一个元素时显示一个元素

标签 javascript html polymer polymer-2.x custom-element

我已经使用 Polymer 2 创建了两个自定义元素:

  • 一个按钮
  • 叠加元素

我在另一个“主要元素”上导入并使用它们。

我想做的是在每次点击“按钮”时切换“覆盖元素”上的一个类。

这有可能吗?我可以在元素之间共享数据绑定(bind)吗?

最佳答案

使用格言“事件在上, Prop 在下”,兄弟元素通过其父元素共享数据。对此有多种解决方案。我正在使用 Redux跨多个元素共享数据,但简单的父对n子方法有效:

在 main-element.html 中

<button-element id="button"></button-element>
<overlay-element id="overlay"></overlay-element>
...
ready() {
  super.ready();
  this.$.button.addEventListener('toggle', this._onUpdate);
}
_onUpdate(event) {
  this.$.overlay.toggle = !this.$.overlay.toggle;
}

在 button-element.html 中

<button on-click="_doClick">Ok</button>
...
_doClick(event) {
  this.dispatchEvent(new CustomEvent('toggle'));
}

在 overlay-element.html 中

<div>[[status]]</div>
...
static get properties() {
  return {
    toggle: {
      type: Boolean,
      observer: '_toggleChanged'
    },
    status: {
      type: String
    }
...
_toggleChanged(newValue, oldValue) {
  this.status = newValue ? 'I\'m hit.' : 'Missed me.';
}

参见 this pen .

关于javascript - Polymer 2 - 单击另一个元素时显示一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49083284/

相关文章:

javascript - 确定鼠标悬停在元素上时是否有元素 "dragged"

html - 使用 SVG 的最佳实践,关于高度和宽度?

html - 如何在定义的位置换行?

grails - Grails GSP中的Polymer 1.0车身元素

Dartium 显示空白页

javascript - JavaScript 1.7 中的解构

javascript - canvasJS 通过直接传递一个对象来插入新的数据点

polymer - 是否可以在本地运行 polymer ?

javascript - 使用Capybara/Poltergeist使用Fullcalendar测试拖放

javascript - jquery 将一个事件绑定(bind)到一个类,或者类似的东西?