国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

對VUE中的對象添加屬性

2019-11-19 12:55:03
字體:
來源:轉載
供稿:網友

背景:在通過接口獲取數據集對象后,根據業務場景需要在數據集對象上增加額外的屬性

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= thissel.mindData= res.datafor(letitemofsel.mindData) {item.value= ''item.content=''}})

2) 這里我自定義了radio控件,部分代碼如下

<mt-cell:title="label"class="zm-radio mint-field"><input:placeholder="placeholder"type="text":readonly="!editable"style="margin-right: 14px;"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":style="{height:popupHeight}"ref="pop"><zm-container><zm-mainref="zmRadioMain"><div@click="popupVisible=false"><mt-radiostyle="width: 100%":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.dictItemsthis.currentValue= this.valueletheight= this.options.length * 48letmaxHeight= window.innerHeight * 0.5if(height> maxHeight) {this.popupHeight= maxHeight+ 'px'letscrollHeight= maxHeight* maxHeight/ heightthis.$refs.zmRadioMain.setScroll(scrollHeight,window.innerWidth)}},currentValue() {console.log('radio_currentValue:'+ this.currentValue)this.$emit('input',this.currentValue)letcontent= this.contentletlabel= ''for(letitemof this.options) {if(_.isEqual(item.value,this.currentValue)) {label= item.labelbreak}}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.dictItemsthis.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= thissel.mindData= res.datafor(letitemofsel.mindData) {sel.$set(item,'value','')sel.$set(item,'content','')}})

總結原因:其實問題是vue實例對象不允許直接添加屬性或刪除屬性,需要通過set方式更新數據對象。

另一種實現方式,可以采用先給臨時對象tempData添加屬性,再賦值給mindData

以上這篇對VUE中的對象添加屬性就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 蒙城县| 加查县| 嵩明县| 内黄县| 习水县| 沅江市| 房产| 高青县| 梓潼县| 景泰县| 中阳县| 余江县| 安达市| 仙居县| 长治县| 乌鲁木齐市| 西盟| 布尔津县| 香港| 滨海县| 通榆县| 翁牛特旗| 大姚县| 晋江市| 成都市| 洪泽县| 宜章县| 东平县| 潢川县| 株洲县| 美姑县| 改则县| 海城市| 元朗区| 扎鲁特旗| 岚皋县| 前郭尔| 曲沃县| 杨浦区| 德保县| 米泉市|