如何在页面加载时更改 qselect 中的选定项目
How can I change selected item in qselect on page load
我在我的页面上使用带有一些选项的 QSelect 下拉列表 header,如下所示:
<q-select
filled
v-model="model"
use-input
hide-selected
fill-input
input-debounce="0"
:options="options"
@filter="filterFn"
hint="Basic autocomplete"
style="width: 250px; padding-bottom: 32px"
emit-value
map-options
>
<template v-slot:no-option>
<q-item>
<q-item-section class="text-grey">
No results
</q-item-section>
</q-item>
</template>
</q-select>
const stringOptions = [
{label:'Google', value:'g1111111111'}, {label:'Facebook', value:'f2222222222'}, {label:'Twitter', value:'t3333333'}, {label:'Apple', value:'a44444444'}, {label:'Oracle', value:'o555555555'}
]
new Vue({
el: '#q-app',
data () {
return {
model: 'f2222222222',
options: stringOptions
}
},
methods: {
filterFn (val, update, abort) {
update(() => {
const needle = val.toLowerCase()
this.options = stringOptions.filter(v => v.label.toLowerCase().indexOf(needle) > -1)
})
}
}
})
如何使用某种方法将页面加载时的选定值从 facebook 更改为 google?
我想像下面这样的东西,但无法让它工作:
mounted: function () {
this.model = 'g1111111111'
},
代码笔:https://codepen.io/aquadk/pen/JQbbKw
谢谢
您可以使用 updated
方法,它在数据更改并为该组件创建虚拟 dom 后调用。然后就可以更新模型的值了。
const stringOptions = [
{label:'Google', value:'g1111111111'}, {label:'Facebook', value:'f2222222222'}, {label:'Twitter', value:'t3333333'}, {label:'Apple', value:'a44444444'}, {label:'Oracle', value:'o555555555'}
]
new Vue({
el: '#q-app',
data () {
return {
model: 'f2222222222',
options: stringOptions
}
},
methods: {
filterFn (val, update, abort) {
update(() => {
const needle = val.toLowerCase()
this.options = stringOptions.filter(v => v.label.toLowerCase().indexOf(needle) > -1)
})
}
},
updated(){
// Update the value of model
this.model = 'g1111111111';
}
})
mounted
应该可以工作,如果它没有按您预期的方式工作,请尝试安装在内部 nextTick()
。
这是您的代码示例:
mounted () {
this.$nextTick(() => {
this.model = 'a44444444'
})
},
我在我的页面上使用带有一些选项的 QSelect 下拉列表 header,如下所示:
<q-select
filled
v-model="model"
use-input
hide-selected
fill-input
input-debounce="0"
:options="options"
@filter="filterFn"
hint="Basic autocomplete"
style="width: 250px; padding-bottom: 32px"
emit-value
map-options
>
<template v-slot:no-option>
<q-item>
<q-item-section class="text-grey">
No results
</q-item-section>
</q-item>
</template>
</q-select>
const stringOptions = [
{label:'Google', value:'g1111111111'}, {label:'Facebook', value:'f2222222222'}, {label:'Twitter', value:'t3333333'}, {label:'Apple', value:'a44444444'}, {label:'Oracle', value:'o555555555'}
]
new Vue({
el: '#q-app',
data () {
return {
model: 'f2222222222',
options: stringOptions
}
},
methods: {
filterFn (val, update, abort) {
update(() => {
const needle = val.toLowerCase()
this.options = stringOptions.filter(v => v.label.toLowerCase().indexOf(needle) > -1)
})
}
}
})
如何使用某种方法将页面加载时的选定值从 facebook 更改为 google?
我想像下面这样的东西,但无法让它工作:
mounted: function () {
this.model = 'g1111111111'
},
代码笔:https://codepen.io/aquadk/pen/JQbbKw
谢谢
您可以使用 updated
方法,它在数据更改并为该组件创建虚拟 dom 后调用。然后就可以更新模型的值了。
const stringOptions = [
{label:'Google', value:'g1111111111'}, {label:'Facebook', value:'f2222222222'}, {label:'Twitter', value:'t3333333'}, {label:'Apple', value:'a44444444'}, {label:'Oracle', value:'o555555555'}
]
new Vue({
el: '#q-app',
data () {
return {
model: 'f2222222222',
options: stringOptions
}
},
methods: {
filterFn (val, update, abort) {
update(() => {
const needle = val.toLowerCase()
this.options = stringOptions.filter(v => v.label.toLowerCase().indexOf(needle) > -1)
})
}
},
updated(){
// Update the value of model
this.model = 'g1111111111';
}
})
mounted
应该可以工作,如果它没有按您预期的方式工作,请尝试安装在内部 nextTick()
。
这是您的代码示例:
mounted () {
this.$nextTick(() => {
this.model = 'a44444444'
})
},