【问题标题】:Programmatically open each expansion panel in Vuetify以编程方式打开 Vuetify 中的每个扩展面板
【发布时间】:2020-11-11 03:44:40
【问题描述】:

我正在尝试使用 Vuetify 2.3.5 以编程方式打开和关闭扩展面板

<v-expansion-panels accordion>
    <v-expansion-panel v-for="(item,i) in faqs" :key="i">
        <div class="expansion-panel-header-container">
            <div class="handle"><v-icon>$drag_icon</v-icon></div>
            <v-expansion-panel-header hide-actions expand-icon="$edit">
                <span class="font-weight-bold">{{item.question}}</span>
            </v-expansion-panel-header>
            <div class="action-icons">
                <v-icon @click.native="doSomething">$edit</v-icon>
                <v-icon>$delete</v-icon>
            </div>
        </div>
    <v-expansion-panel-content>
        CONTENT GOES HERE
    </v-expansion-panel-content>
<v-expansion-panels accordion>

目前 v-expansion-panel-header 成为触发面板打开和关闭的整个按钮,但我想禁用该功能并使用 &lt;v-icon @click.native="doSomething"&gt;$edit&lt;/v-icon&gt; 触发打开和关闭。

我找不到任何有关如何执行此操作的文档。

有谁知道我该如何实现这个功能?

【问题讨论】:

    标签: javascript vue.js vuetify.js


    【解决方案1】:

    您需要做的就是添加v-model。当您将值设置为 null 时,所有面板都将关闭:

    <v-expansion-panels v-model="openedPanel" accordion>
      ...
    
    data () {
      return {
        openedPanel: null
      }
    },
    methods: {
      closeAllPanels () {
        this.openedPanel = null
      },
      openPanel (index) {
        this.openedPanel = index
      }
    }
    

    如果您希望能够同时打开多个面板,请改用数组:

    <v-expansion-panels v-model="openedPanel" multiple accordion>
      ...
    
    data () {
      return {
        openedPanel: []
      }
    },
    methods: {
      closeAllPanels () {
        this.openedPanel = []
      },
      openPanel (index) {
        this.openedPanel.push(index)
      },
      closePanel (index) {
        this.openedPanel.splice(index, 1)
      }
    }
    

    【讨论】:

    • 如何打开面板?
    • @Jason 只需将 this.openedPanel 设置为所需的索引,例如如果将其设置为 0,则将打开第一个面板
    • 抱歉耽搁了。是的,我只是想尝试切换打开和关闭。我正要选择你的答案
    • @Jason 我更新了答案,看看那些方法
    • 是的,我看到了。我只有一个按钮,所以我将使用 openPanel 方法。我现在需要检查面板是否已打开,如果已打开,请关闭它
    猜你喜欢
    • 1970-01-01
    • 2014-05-10
    • 1970-01-01
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多