如何动态设置v-select值?

时间:2017-09-22 16:23:07

标签: vue.js vuejs2 vuetify.js

我的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属性的值,例如“葡萄牙语”。

问题:在加载DOM元素时,如何更新v-select以便设置fetchedLocale的值,如“Portugues”之前提到的,而不是设置默认的空值?

1 个答案:

答案 0 :(得分:4)

As per the documentationitem-value道具定义了要用作每个项目的值的属性名称。此道具的默认值为'value',表示默认情况下,每个项目的value属性将用作每个项目的值。例如,如果您将其设置为text,则每个text的{​​{1}}属性都将用作该项的值。但是,这实际上并没有设置选择组件的值。

您已经通过languages将选择组件的值绑定到setLocale。因此,如果您要将选择组件的值更改为v-model值,只需使用值fetchedLocale更新setLocale,组件就会更新:

fetchedLocale

这是一个有效的例子:

&#13;
&#13;
this.setLocale = this.fetchedLocale
&#13;
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);
  }
})
&#13;
&#13;
&#13;

相关问题