【问题标题】:Passing to v-model a composed value将组合值传递给 v-model
【发布时间】:2021-09-12 17:39:18
【问题描述】:

我正在使用带有 VueJs 3 的 Quasar v.2。 我正在使用q-select 组件来动态切换语言。这是我的代码:

    <template>
         <q-select v-model="$i18n.locale" :options="langs">
         </q-select>
    </template>
    
    <script lang="ts">
        export default defineComponent({
          name: 'LanguageSwitch',
          setup() {
             const langs = ['en', 'jp']
             return {langs}
          }
    
    </script>

我现在要做的是继续显示“en”和“jp”,并在我将它们传递给 i18n 的那一刻将它们与另一个单词(形成,例如“en-US”)连接起来。语言环境

【问题讨论】:

    标签: vue.js vuejs3 quasar-framework vue-composition-api


    【解决方案1】:

    您可以更新 langs 以包含所需的值和标签:

    export default defineComponent({
      setup() {
        const langs = [
          { value: 'en-US', label: 'en' },
          { value: 'jp-JP', label: 'jp' },
        ]
        return { langs }
      }
    }
    

    然后将&lt;q-select&gt;.optionValue 设置为"value",使其使用项目的value 属性作为选项值,并将&lt;q-select&gt;.optionLabel 设置为"label" 以使用项目的label 属性作为标签:

    <q-select v-model="$i18n.locale" :options="langs"
      option-value="value"
      option-label="label">
    </q-select>
    

    【讨论】:

    • 您忘记添加“emit-value”(使用emit-value时,模型成为指定选定选项的确定值。默认为发射整个选项。使用有意义it only when the options are of Object form.) Only one other question: now it displays the value and not the label, so it displays: "en-US" instead of only "en".有没有办法来解决这个问题?目前我正在使用“地图选项”,但我读到使用它时会降低性能
    猜你喜欢
    • 2019-02-15
    • 1970-01-01
    • 2021-04-07
    • 1970-01-01
    • 2021-08-25
    • 2022-01-27
    • 1970-01-01
    • 2021-05-21
    • 2023-01-16
    相关资源
    最近更新 更多