私のVuetifyv-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
プロパティの値を取得します。 「ポルトガル語」。
質問:デフォルトの空の値を設定する代わりに、DOM要素をロードするときに、「ポルトガル語」で前述したようにfetchedLocale
の値を設定するように、v-select
を更新するにはどうすればよいですか?
ドキュメントによる 、item-value
propは、各アイテムの値として使用するプロパティ名を定義します。この小道具のデフォルトは'value'
です。これは、各アイテムのvalue
プロパティがデフォルトで各アイテムの値として使用されることを意味します。たとえば、これをtext
に設定すると、各text
のlanguages
プロパティがそのアイテムの値として使用されます。ただし、これは実際にはselectコンポーネントの値を設定しません。
選択コンポーネントの値は、v-model
を介してsetLocale
に既にバインドされています。したがって、選択したコンポーネントの値をfetchedLocale
値に変更する場合は、setLocale
をfetchedLocale
の値で更新するだけで、コンポーネントが更新されます。
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/[email protected]/dist/vuetify.js"></script>
<link href="https://unpkg.com/[email protected]/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>