代码之家  ›  专栏  ›  技术社区  ›  Moshe

切换VUEJ中的其他元素

  •  0
  • Moshe  · 技术社区  · 4 年前

    我正在VueJS中创建一个导航栏,在那里我可以打开或关闭下拉菜单。切换一个单独的下拉菜单没有问题,但我无法解决如何处理多个下拉菜单,这样,如果我打开一个菜单,其他菜单将自动关闭。

    // template
    <button @click="isMenuOneOpen = !isMenuOneOpen">Menu One<button>
    <button @click="isMenuTwoOpen = !isMenuTwoOpen">Menu Two<button>
    <button @click="isMenuThreeOpen = !isMenuThreeOpen">Menu Three<button>
    <button @click="isMenuFourOpen = !isMenuFourOpen">Menu Four<button>
    ...
    
    // script --> data
    isMenuOneOpen: false,
    isMenuTwoOpen: false,
    isMenuThreeOpen: false,
    isMenuFourOpen: false,
    
    

    如何使用VueJS完成此操作?

    谢谢。

    0 回复  |  直到 4 年前
        1
  •  0
  •   Rod Talingting    4 年前

    下面是一个示例代码。但问题是,一旦你禁用了这个按钮,你就不能点击它了。也许添加一个复选框来启用所有按钮?

    <div id="app">
      <v-app id="inspire">
        
        <div v-for="button in buttons">
          <button @click="updateMenu(button.name)" :disabled='button.isDisabled'>{{ button.name }}</button>
        </div>
      
      </v-app>
    </div>
    

    new Vue({
      el: '#app',
      vuetify: new Vuetify(),
      data: () => ({
        buttons: [{name: "menu one", isDisabled: false}, {name: "menu two", isDisabled: false}, {name: "menu three", isDisabled: false}, {name: "menu four", isDisabled: false}]
      }),
      methods: {
        updateMenu: function (name) {
          const button = this.buttons.find(b => b.name === name);
          button.isDisabled = false;
          
          const toDisableButtons = this.buttons.filter(b => b.name != name);
          
          toDisableButtons.forEach(function(item) {
            item.isDisabled = true;
          });
        }
      }
    });