我的Vuetify v-select元素看起来是这样的:
<v-select
v-bind:items="languages"
v-model="setLocale"
label="Language:"
auto prepend-icon="map"
item-value="fetchedLocale"
hide-details
id="langSelect"
>在data中,您可以找到:
data () {
return {
languages: [
{ shortCode: 'en', text: 'English' },
{ shortCode: 'pl', text: 'Polski' },
{ shortCode: 'es', text: 'Español' },
{ shortCode: 'pt', text: 'Portugues' }
],
fetchedLocale: '',
setLocale: null
}
}, (...)经过一些处理后,fetchedLocale从上面的数组中获取一些text属性的值,例如“葡萄牙语”
问:如何更新v-select,以便在加载DOM元素时设置fetchedLocale的值,就像前面提到的"Portugues",而不是设置默认的空值?
发布于 2017-09-23 01:12:50
As per the documentation,item-value属性定义要用作每一项的值的属性名称。这个属性的默认值是'value',这意味着默认情况下,每个项目的value属性将用作每个项目的值。例如,如果将其设置为text,则每个languages的text属性将用作该项的值。但是,这并不会实际设置select组件的值。
您已经通过v-model将select组件的值绑定到setLocale。因此,如果您想要将选择组件的值更改为fetchedLocale值,只需使用fetchedLocale的值更新setLocale,组件就会更新:
this.setLocale = this.fetchedLocale下面是一个有效的示例:
new Vue({
el: '#app',
data() {
return {
languages: [
{ shortCode: 'en', text: 'English' },
{ shortCode: 'pl', text: 'Polski' },
{ shortCode: 'es', text: 'Español' },
{ shortCode: 'pt', text: 'Portugues' }
],
fetchedLocale: '',
setLocale: null
};
},
created() {
setTimeout(() => {
this.fetchedLocale = 'English';
this.setLocale = this.fetchedLocale;
}, 1000);
}
})<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.4.4/vue.min.js"></script>
<script src="https://unpkg.com/vuetify@0.15.7/dist/vuetify.js"></script>
<link href="https://unpkg.com/vuetify@0.15.7/dist/vuetify.min.css" rel="stylesheet"/>
<link href='https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Material+Icons' rel="stylesheet" type="text/css">
<div id="app">
<v-app>
<v-select
:items="languages"
v-model="setLocale"
label="Language:"
auto prepend-icon="map"
item-value="text"
hide-details
id="langSelect"
></v-select>
</v-app>
</div>
https://stackoverflow.com/questions/46369200
复制相似问题