在大多數狀況下select下拉菜單都是value和text設置不一樣的值的,value通常來講是與後臺交互的值,而text是前端用來顯示的文本;前端
可是,vue.js對到表單的雙向綁定時若是option設置了value及text的狀況下,model獲取到的是value值!vue
若是直接綁定值的話,頁面上顯示的文案就是會value,顯然這並非咱們想要的結果!那有什麼辦法能獲取到被選中的option中的text呢?app
或許過濾器filter能夠一試:spa
Filter代碼:雙向綁定
Vue.filter('optionTxt',function(value,obj){ var newObj = {}; if(value=='請選擇'){ return value }else{ for(var i=0; i<obj.length; i++){ newObj[obj[i].val] = obj[i].txt; } return newObj[value] } })
定義過濾器optionTxt,把optionObj對象傳入進行遍歷,用一個新對象newObj儲存相應的值,把選中的value值做爲參數傳入返回newObj的值~code
VM:對象
var vm = new Vue({ el: '#app', data: { selectTxt: '請選擇', optionObj: [ {val: '1',txt: '選項A'}, {val: '2',txt: '選項B'}, {val: '3',txt: '選項C'} ] } })
HTML:blog
<div id="app"> <div class="container"> <span>方便聯繫時間段</span> <p>{{selectTxt | optionTxt(optionObj)}}</p> <select v-model="selectTxt "> <option v-for="option of optionObj" :value="option.val">{{option.txt}}</option> </select> </div> </div>