Vue.js 依赖 select
Vue.js dependent select
我正处于学习的初级阶段 Vue.js,遇到了我现在无法解决的问题。所以我有 1 个 select 字段:
data: {
list: {
'Option 1': [ { size:'1',prize:'5' }, { size:'2',prize:'10' } ]
}
}
然后我像这样填充第一个 select 字段:
<select v-model="firstOptions" v-on:change="onChange">
<option v-for="(item, index) in list">{{ index }}</option>
</select>
此时一切正常,但是如何根据第一个 select 填充另一个 select 字段?我需要访问尺寸和价格。
我认为应该在这里完成:
methods: {
onChange: function() {
// get options for second select field
}
}
我假设在您的数据结构 list
中,每个 属性 的值定义了您将在第二个 select 中使用的选项。这里的关键是第一个 select 的模型驱动第二个的选项。
<option v-for="option in list[firstOption]" value="option.size">{{option.prize}}</option>
我不确定您希望文本和值在第一个或第二个 select 中的布局如何,但这里有一个示例。
new Vue({
el:"#app",
data: {
firstOption: null,
secondOption: null,
list: {
'Option 1': [ { size:'1',prize:'5' }, { size:'2',prize:'10' } ],
'Option 2': [{size:'3', prize:'8'}]
}
}
})
并在您的模板中
<div id="app">
<select v-model="firstOption">
<option v-for="(item, index) in list">{{ index }}</option>
</select>
<select v-model="secondOption" v-if="firstOption">
<option v-for="option in list[firstOption]" value="option.size">{{option.prize}}</option>
</select>
</div>
我正处于学习的初级阶段 Vue.js,遇到了我现在无法解决的问题。所以我有 1 个 select 字段:
data: {
list: {
'Option 1': [ { size:'1',prize:'5' }, { size:'2',prize:'10' } ]
}
}
然后我像这样填充第一个 select 字段:
<select v-model="firstOptions" v-on:change="onChange">
<option v-for="(item, index) in list">{{ index }}</option>
</select>
此时一切正常,但是如何根据第一个 select 填充另一个 select 字段?我需要访问尺寸和价格。
我认为应该在这里完成:
methods: {
onChange: function() {
// get options for second select field
}
}
我假设在您的数据结构 list
中,每个 属性 的值定义了您将在第二个 select 中使用的选项。这里的关键是第一个 select 的模型驱动第二个的选项。
<option v-for="option in list[firstOption]" value="option.size">{{option.prize}}</option>
我不确定您希望文本和值在第一个或第二个 select 中的布局如何,但这里有一个示例。
new Vue({
el:"#app",
data: {
firstOption: null,
secondOption: null,
list: {
'Option 1': [ { size:'1',prize:'5' }, { size:'2',prize:'10' } ],
'Option 2': [{size:'3', prize:'8'}]
}
}
})
并在您的模板中
<div id="app">
<select v-model="firstOption">
<option v-for="(item, index) in list">{{ index }}</option>
</select>
<select v-model="secondOption" v-if="firstOption">
<option v-for="option in list[firstOption]" value="option.size">{{option.prize}}</option>
</select>
</div>