您好,登錄后才能下訂單哦!
這篇文章主要介紹了如何在VUE中為對象添加屬性,此處通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考價值,需要的朋友可以參考下:
Vue具體輕量級框架、簡單易學、雙向數據綁定、組件化、數據和結構的分離、虛擬DOM、運行速度快等優勢,Vue中頁面使用的是局部刷新,不用每次跳轉頁面都要請求所有數據和dom,可以大大提升訪問速度和用戶體驗。
data中定義的數據集對象mindData格式示例如下
mindData: [ {label:'清醒',value:'清醒'}, {label:'朦朧',value:'朦朧'}, {label:'嗜睡',value:'嗜睡'}, {label:'昏睡',value:'昏睡'}, {label:'譫妄',value:'譫妄'}, {label:'模糊',value:'模糊'}]
1) 通過post調用接口獲取minData對象,遍歷添加屬性value和content(方便后續通過v-model設置綁定radio控件的選擇結果值value)
this.$http.post('XXXXXXXXXXXXXXXXXXXXXXXX', { parms:'xxx' }).then(res => { letsel= this sel.mindData= res.data for(letitemofsel.mindData) { item.value= '' item.content='' } })
2) 這里我自定義了radio控件,部分代碼如下
<mt-cell:title="label"class="zm-radio mint-field"> <input:placeholder="placeholder" type="text" :readonly="!editable" v-model="currentContent" @click="onHandleClick" class="mint-field-core"/> <spanclass="mintui mintui-back reset" @click="popupVisible=true"></span> <mt-popupclass="zm-radio-popup" position="bottom" v-model="popupVisible" popup-transition="popup-fade" : ref="pop"> <zm-container> <zm-mainref="zmRadioMain"> <div@click="popupVisible=false"> <mt-radio :title="label" align="right" v-model="currentValue" :options="options"> </mt-radio> </div> </zm-main> </zm-container> </mt-popup> </mt-cell> export default{ watch: { popupVisible() { this.options= this.dictItems this.currentValue= this.value letheight= this.options.length * 48 letmaxHeight= window.innerHeight * 0.5 if(height> maxHeight) { this.popupHeight= maxHeight+ 'px' letscrollHeight= maxHeight* maxHeight/ height this.$refs.zmRadioMain.setScroll(scrollHeight,window.innerWidth) } }, currentValue() { console.log('radio_currentValue:'+ this.currentValue) this.$emit('input',this.currentValue) letcontent= this.content letlabel= '' for(letitemof this.options) { if(_.isEqual(item.value,this.currentValue)) { label= item.label break } } this.currentContent= content }
3) 綁定到自定義的radio控件上
<zm-radiolabel="單選:" :editable="false" :dict-data="mindData" :content.sync="data.content" v-model="data.value"></zm-radio>
賦值的關鍵代碼如下
watch: { popupVisible() { this.options= this.dictItems this.currentValue= this.value
彈出選項框列表的時候,會把當前文本上的value值賦值給currentValue對象,這樣下拉框就會自動定位顯示原先的選項值,期望達到的效果如下
乍看之下,沒什么問題,運行后發現
點擊下拉框,彈出選項列表,怎么數據沒有通過v-model綁定上去,并且radio的value和lable值一直是空
搗鼓了很久,測試發現通過定義mindRadio對象的方式綁定在zm-radio對象上,顯示效果是能獲得期望結果,那問題很明顯,對象屬性的創建有問題
<zm-radiolabel="單選:" :editable="false" :dict-data="mindData" :content.sync="mindRadio.content" v-model="mindRadio.value"></zm-radio> data() { return{ mindRadio: { code:'', value:'' } }
經過vue官方資料查詢,提供了vue.set方法,通過以下方法解決了設置對象屬性的問題
this.$http.post('XXXXXXXXXXXXXXXXXXXXXXXX', { parms:'xxx' }).then(res => { letsel= this sel.mindData= res.data for(letitemofsel.mindData) { sel.$set(item,'value','') sel.$set(item,'content','') } })
到此這篇關于如何在VUE中為對象添加屬性的文章就介紹到這了,更多相關如何在VUE中為對象添加屬性的內容請搜索億速云以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持億速云!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。