我想根据第一个选择列表中的选定值更改第二个选择列表。当我为每个select做了两个vue实例时,它起作用了,但我想做一个小应用,这样它就更干净了。
json数组需要在vue js之外。你可以在小提琴上看到。
不知怎么的,我就是不知道如何更新第二个选择列表。
在我做这样的事情之前,它工作得很好:

// methods of first select (category)
methods: {
  update: function (value)
     this.options = types[value]
  }
}

...

// methods of second select (typselect)
methods: {
  onChange(event) {
    typselect.update(event.srcElement.value)
  }
}

应用程序:
<div id="app">

  <select v-model="category" v-on:change="onChange">
    <option>Choose</option>
    <option value="5">type1</option>
    <option value="6">type2</option>
    <option value="11">type3</option>
  </select>

  <select id="typselect">
    <option v-for="option in options" v-bind:value="option.value">{{ option.text }}</option>
  </select>

</div>

所以我把它换成这样:
new Vue({
  el: '#app',

  data: {
    category: '5'
  },

  computed: {
    options: function(event) {
      console.log('should be called on change');

      let options = ''
      options = 1;
      //  options = types[event.srcElement.value]; // this would be so easy...
      return options
    }
  },

  methods: {
    onChange: function(e) {
      console.log(event.srcElement.value);
      this.options = this.options
    }
  }
})

但我不知道如何更新第二个选择列表。
来了一把小提琴:
https://jsfiddle.net/Honkoman/g9g5uukr/2/

最佳答案

你的电脑应该是这样的。

computed: {
  options: function(event) {
    return types[this.category]
  }
},

更新了fiddle

09-25 19:32