vue.js雙向綁定之--select獲取text

在大多數狀況下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>
相關文章
相關標籤/搜索