2017-08-10 366 views
1

HTML:如何从vue js中的select中获取值和文本?

<select v-model="facilitySelected" name="facilities" multiple="multiple" id="facilities" size="4" class="form-control"> 
    <option value="1">Double (Non a/c)</option> 
    <option value="2">Premium Double (a/c)</option> 
    <option value="3">Standard Double (a/c)</option> 
</select> 

Click事件:

<a @click="addFacilities" class="btn btn-default add_option" rel="facilities2" id="add"><i class="fa fa-arrow-right"></i></a> 

脚本:

export default { 
    data(){ 
      return{ 
       facilitySelected:[] 
      } 
    } 

    methods: { 
     addFacilities() { 
     this.facilitySelected; 
     console.log(this.facilitySelected); 
     } 
    } 
} 

在这里,我有选择的选项列表, 当我点击addFacilitiesvalue所选选项仅作为console.log的输出,我需要同时有value以及text中的选项通过console.log出现..如何同时获得valuetext当我点击addFacilities

回答

1

在Vue中,您的value可能是一个复杂的对象。

在此示例中,这些值是一个同时包含文本和值的对象。当他们被选中时,你可以看到你有两个在facilitySelected

console.clear() 
 

 

 
new Vue({ 
 
    el: "#app", 
 
    data: { 
 
    facilitySelected: [] 
 
    } 
 
})
<script src="https://unpkg.com/[email protected]/dist/vue.js"></script> 
 
<div id="app"> 
 
    <select v-model="facilitySelected" name="facilities" multiple="multiple" id="facilities" size="4" class="form-control"> 
 
    <option :value="{value: 1, text:'Double (Non a/c)'}">Double (Non a/c)</option> 
 
    <option :value="{value: 2, text:'Premium Double (a/c)'}">Premium Double (a/c)</option> 
 
    <option :value="{value: 3, text:'Standard Double (a/c)'}">Standard Double (a/c)</option> 
 
</select> 
 
    <hr> Selected: {{facilitySelected}} 
 
</div>

但是你可以简化这一过程,并避免通过存储在数据你的选择重复自己。

console.clear() 
 

 

 
new Vue({ 
 
    el: "#app", 
 
    data: { 
 
    facilitySelected: [], 
 
    options: [{ 
 
     value: 1, 
 
     text: 'Double (Non a/c)' 
 
     }, 
 
     { 
 
     value: 2, 
 
     text: 'Premium Double (a/c)' 
 
     }, 
 
     { 
 
     value: 3, 
 
     text: 'Standard Double (a/c)' 
 
     } 
 
    ] 
 
    } 
 
})
<script src="https://unpkg.com/[email protected]/dist/vue.js"></script> 
 
<div id="app"> 
 
    <select v-model="facilitySelected" name="facilities" multiple="multiple" id="facilities" size="4" class="form-control"> 
 
    <option v-for="option in options" :value="option">{{option.text}}</option> 
 
</select> 
 
    <hr> Selected: {{facilitySelected}} 
 
</div>