Vue.js依赖选择

Rom*_*LTU 4 javascript vue.js vuejs2

我正处于初学阶段学习Vue.js并遇到了我现在无法弄清楚的问题.所以我有1个选择字段:

data: {
  list: {
    'Option 1': [ { size:'1',prize:'5' }, { size:'2',prize:'10' } ]
  }
}
Run Code Online (Sandbox Code Playgroud)

然后我填充第一个选择字段,如下所示:

<select v-model="firstOptions" v-on:change="onChange">
  <option v-for="(item, index) in list">{{ index }}</option>
</select>
Run Code Online (Sandbox Code Playgroud)

此时一切都很好,但如何根据第一个选择填充另一个选择字段?我需要访问尺寸和价格.

我认为这应该在这里完成:

methods: {
  onChange: function() {
   // get options for second select field
  }
}
Run Code Online (Sandbox Code Playgroud)

Ber*_*ert 6

我在这里假设你的数据结构,list每个属性的值定义了你将在第二个选择中使用的选项.这里的关键是第一个选择的模型驱动第二个选项.

<option v-for="option in list[firstOption]" value="option.size">{{option.prize}}</option>
Run Code Online (Sandbox Code Playgroud)

我不确定你想要在第一个或第二个选择中列出你的文本和值,但这是一个例子.

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'}]
    }
  }
})
Run Code Online (Sandbox Code Playgroud)

并在您的模板中

<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>
Run Code Online (Sandbox Code Playgroud)

codepen中的示例.