2017-04-13 85 views
0

vue.js多个选择的问题我尝试了很多解决方案,但我没有找到解决方案 和我得到错误[Vue警告]:期望一个数组的值绑定,但得到了字符串vue.js多个选择错误

 <select name="users_id[]" multiple class="form-control" v-model="model.users_id" > 
     <option>Select</option> 
     <option v-for="users in option.users" 
     v-bind:value="users.id"> 
     {{users.name}} 
     </option>[![enter image description here][1]][1] 
     </select> 
<script> 
    export default { 
      props: ['title'], 
      data(){ 
       return { 
        model: { 
         'title': '', 
         'users_id': '', 
        }, 
        option: { 
         users: [] 
        }, 
       } 
      }, 
      created(){ 
       this.fetchData(); 
      }, 
      methods: { 
       fetchData() { 
        let vm = this; 
        axios.get('/subject/create') 
         .then(function(response) { 
          Vue.set(vm.$data, 'option', response.data.option) 
         }) 
         .catch(function(error) { 
          console.log(error) 
         }) 
       }, 
</script> 

enter image description here

回答

2

一个问题:multiple v-model="model.users_id"users_id': ''

你有v-modelmultiple options所以用v-model变量链接必须是一个数组。但你传递了一个字符串users_id': ''

所以做:

model: { 
    'title': '', 
    'users_id': [], 
}, 
0

在这一行:

Vue.set(vm.$data, 'option', response.data.option) 

您正在设置option属性,它应该是一个对象包含一个名为users的数组。你设置的值是(可能)是JSON编码的形式,也就是说,一个字符串。

这可能会解决它:

Vue.set(vm.$data, 'option', JSON.parse(response.data.option)) 
1

变化:

model: { 
    'title': '', 
    'users_id': '', 
}, 

要:

model: { 
    'title': '', 
    'users_id': [] 
},