【问题标题】:Get all instances of a vue component and run a function on each获取一个 vue 组件的所有实例并在每个实例上运行一个函数
【发布时间】:2021-06-20 13:32:20
【问题描述】:

我有一个名为 Dropdown 的组件。

我通过点击事件触发特定实例:

<button @click.stop="$refs.notificationsDropdown.toggleDropdown()"></button>

触发器

<dropdown ref="notificationsDropdown"></dropdown>

toggleDropdown 函数只是更改 data 中的一个布尔值,如果 true 则显示一个 div。

在此值设置为 true 之前,我想获取 Dropdown 的所有实例并将此值设置为 false,以便在新的下拉菜单打开之前关闭所有其他下拉菜单。

如何获取Dropdown 的所有实例并在每个实例上运行一个函数以关闭它们的下拉列表?

【问题讨论】:

    标签: vue.js


    【解决方案1】:

    看起来Vuex state 可以提供帮助。您可以将data 中的布尔值更改为compute 值。
    在下拉列表中:

      computed: {
        isShowed: function() {
          return this.$store.state.activeDropdown === this;
        }
      },
      methods: {
        toggleDropdown: function() {
          if (this.$store.state.activeDropdown === this) {
            this.$store.state.activeDropdown = null;
          } else {
            this.$store.state.activeDropdown = this;
          }
        }
      }
    

    【讨论】:

      猜你喜欢
      • 2012-08-28
      • 1970-01-01
      • 1970-01-01
      • 2018-02-15
      • 2019-08-10
      • 1970-01-01
      • 2016-06-11
      • 2015-01-06
      • 2017-10-01
      相关资源
      最近更新 更多