joe*_*pat 1 javascript vue.js vue-component vuejs2 vuetify.js
我是 VUEJS 的新手,无法使用包含 json 对象数组的本地 JSON 文件中的国家/地区名称填充 vuetify 选择元素。它不是填充选项,而是为每个国家/地区创建单个选择对象。
这是我的表格....
<form>
<v-select v-validate="'required'" v-bind="countryData"
v-for="item in countryData" :key="item.name" :items="item.name"
v-model="select" :error-messages="errors.collect('country')"
label="Country" data-vv-name="country" prepend-icon="mdi-flag"
required></v-select>
</form>
Run Code Online (Sandbox Code Playgroud)
这是我的剧本......
<script>
import Vue from "vue";
import VeeValidate from "vee-validate";
import countryData from '@/components/countryData.json';
Vue.use(VeeValidate);
export default {
name: "signup",
$_veeValidate: {
validator: "new"
},
data: () => ({
countryData: countryData,
country: ''
})
</script>
Run Code Online (Sandbox Code Playgroud)
这里 JSON 文件结构...
[
{
"id": 1,
"name": "Afghanistan",
"iso3": "AFG",
"iso2": "AF",
"country_code": "4",
"phone_code": "93",
"capital": "Kabul",
"currency": "AFN",
"states": ["Badakhshan","Badgis"...]
},
{
...
}
]
Run Code Online (Sandbox Code Playgroud)
您不应该使用v-for
向v-select
组件添加数据,您只需要contryData
作为items
属性值传递:
<v-select v-validate="'required'"
:items="countryData"
item-text='name'
item-value='id'
v-model="country"
:error-messages="errors.collect('country')"
label="Country" data-vv-name="country" prepend-icon="mdi-flag"
required></v-select>
Run Code Online (Sandbox Code Playgroud)
注意 'item-name' 将控制您的项目对象中的哪个字段将被显示,而 'item-value' 将是控制所选选项值的字段。我为此选择了“id”,但根据您的用例,您可能会选择“country_code”或其他内容。