国产探花免费观看_亚洲丰满少妇自慰呻吟_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中的對象添加屬性就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大埔区| 密山市| 富源县| 扎兰屯市| 松原市| 桑植县| 汝城县| 青海省| 大新县| 宜春市| 云浮市| 裕民县| 肃宁县| 民县| 荆州市| 平乐县| 汾阳市| 乐都县| 泸定县| 临城县| 同心县| 新蔡县| 新乐市| 康马县| 垦利县| 青铜峡市| 禹城市| 沙雅县| 盈江县| 航空| 满洲里市| 陈巴尔虎旗| 左贡县| 斗六市| 涞源县| 泽库县| 西乌珠穆沁旗| 安新县| 祁东县| 夏邑县| 枝江市|