如何判断哪个q-expansion-item是打开的?
How to determine which q-expansion-item is open?
我有一个 q-list
和几个 q-expansion-item
作为 children。 q-expansion-item
被分配到一个列表,因此在任何给定时间只有一个打开。
<q-list padding>
<q-expansion-item
id="explore"
group="somegroup"
icon="explore"
label="Explore"
default-opened
@show="switchMode">
<q-card id="explore-card">
<q-card-section id="explore-card-section">
Item one text
</q-card-section>
</q-card>
</q-expansion-item>
<q-expansion-item
id="identity"
group="somegroup"
icon="perm_identity"
label="Identity"
@show="switchMode">
<q-card>
<q-card-section>
Item two text.
</q-card-section>
</q-card>
</q-expansion-item>
</q-list>
我想 运行 打开任何 q-expansion-item
时的 Vue 方法,并确定打开了哪个特定项目。
我试过为每个 q-expansion-item
分配一个 id
,但需要一些笨拙的代码来访问 @show
事件中的 ID:`
new Vue({
el: '#q-app',
data: function () {
return {}
},
methods: {
switchMode: function (event) {
console.log(event.target.parentElement.parentElement.parentElement.parentElement.id)
}
},
// ...etc
})
我也尝试过使用 to
属性 来更改 URL 片段,但是当项目展开时 URL 不会更新(它只会在单击项目标题时更新 URL 片段。
如何确定群组中的哪个 q-expansion-item
在任何给定时间处于打开状态?
您可以在不使用 ID 和事件的情况下实现此目的。您可以改用 v-model
。
例子-
<q-expansion-item
group="somegroup"
icon="explore" v-model="selected_model['First']"
label="First"
header-class="text-primary"
>
<q-card>
<q-card-section>
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
</q-card-section>
</q-card>
</q-expansion-item>
<q-separator />
<q-expansion-item
group="somegroup"
v-model="selected_model['Second']"
icon="perm_identity"
label="Second"
header-class="text-teal"
>
<q-card>
<q-card-section>
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
</q-card-section>
</q-card>
</q-expansion-item>
数据-
data(){
return{
selected_model:{}
}
}
结果- { "First": true, "Second": false, "Third": false, "Fourth": false }
Codepen - https://codepen.io/Pratik__007/pen/poymOqm
如果你想先打开默认那么你可以在selected_model
中设置"First":true
。
我有一个 q-list
和几个 q-expansion-item
作为 children。 q-expansion-item
被分配到一个列表,因此在任何给定时间只有一个打开。
<q-list padding>
<q-expansion-item
id="explore"
group="somegroup"
icon="explore"
label="Explore"
default-opened
@show="switchMode">
<q-card id="explore-card">
<q-card-section id="explore-card-section">
Item one text
</q-card-section>
</q-card>
</q-expansion-item>
<q-expansion-item
id="identity"
group="somegroup"
icon="perm_identity"
label="Identity"
@show="switchMode">
<q-card>
<q-card-section>
Item two text.
</q-card-section>
</q-card>
</q-expansion-item>
</q-list>
我想 运行 打开任何 q-expansion-item
时的 Vue 方法,并确定打开了哪个特定项目。
我试过为每个 q-expansion-item
分配一个 id
,但需要一些笨拙的代码来访问 @show
事件中的 ID:`
new Vue({
el: '#q-app',
data: function () {
return {}
},
methods: {
switchMode: function (event) {
console.log(event.target.parentElement.parentElement.parentElement.parentElement.id)
}
},
// ...etc
})
我也尝试过使用 to
属性 来更改 URL 片段,但是当项目展开时 URL 不会更新(它只会在单击项目标题时更新 URL 片段。
如何确定群组中的哪个 q-expansion-item
在任何给定时间处于打开状态?
您可以在不使用 ID 和事件的情况下实现此目的。您可以改用 v-model
。
例子-
<q-expansion-item
group="somegroup"
icon="explore" v-model="selected_model['First']"
label="First"
header-class="text-primary"
>
<q-card>
<q-card-section>
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
</q-card-section>
</q-card>
</q-expansion-item>
<q-separator />
<q-expansion-item
group="somegroup"
v-model="selected_model['Second']"
icon="perm_identity"
label="Second"
header-class="text-teal"
>
<q-card>
<q-card-section>
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
</q-card-section>
</q-card>
</q-expansion-item>
数据-
data(){
return{
selected_model:{}
}
}
结果- { "First": true, "Second": false, "Third": false, "Fourth": false }
Codepen - https://codepen.io/Pratik__007/pen/poymOqm
如果你想先打开默认那么你可以在selected_model
中设置"First":true
。