最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

對(duì)VUE中的對(duì)象添加屬性

來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:07:33
文檔

對(duì)VUE中的對(duì)象添加屬性

對(duì)VUE中的對(duì)象添加屬性:背景:在通過接口獲取數(shù)據(jù)集對(duì)象后,根據(jù)業(yè)務(wù)場景需要在數(shù)據(jù)集對(duì)象上增加額外的屬性 data中定義的數(shù)據(jù)集對(duì)象mindData格式示例如下 mindData: [ {label:'清醒',value:'清醒'}, {label:'朦朧',value:'朦朧'}, {label:'嗜睡',value:'
推薦度:
導(dǎo)讀對(duì)VUE中的對(duì)象添加屬性:背景:在通過接口獲取數(shù)據(jù)集對(duì)象后,根據(jù)業(yè)務(wù)場景需要在數(shù)據(jù)集對(duì)象上增加額外的屬性 data中定義的數(shù)據(jù)集對(duì)象mindData格式示例如下 mindData: [ {label:'清醒',value:'清醒'}, {label:'朦朧',value:'朦朧'}, {label:'嗜睡',value:'

背景:在通過接口獲取數(shù)據(jù)集對(duì)象后,根據(jù)業(yè)務(wù)場景需要在數(shù)據(jù)集對(duì)象上增加額外的屬性

data中定義的數(shù)據(jù)集對(duì)象mindData格式示例如下

mindData: [
{label:'清醒',value:'清醒'}, {label:'朦朧',value:'朦朧'},
{label:'嗜睡',value:'嗜睡'}, {label:'昏睡',value:'昏睡'},
{label:'譫妄',value:'譫妄'}, {label:'模糊',value:'模糊'}]

1) 通過post調(diào)用接口獲取minData對(duì)象,遍歷添加屬性value和content(方便后續(xù)通過v-model設(shè)置綁定radio控件的選擇結(jié)果值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"
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.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>

賦值的關(guān)鍵代碼如下

watch: {
popupVisible() {
this.options= this.dictItems
this.currentValue= this.value

彈出選項(xiàng)框列表的時(shí)候,會(huì)把當(dāng)前文本上的value值賦值給currentValue對(duì)象,這樣下拉框就會(huì)自動(dòng)定位顯示原先的選項(xiàng)值,期望達(dá)到的效果如下

乍看之下,沒什么問題,運(yùn)行后發(fā)現(xiàn)

點(diǎn)擊下拉框,彈出選項(xiàng)列表,怎么數(shù)據(jù)沒有通過v-model綁定上去,并且radio的value和lable值一直是空

搗鼓了很久,測試發(fā)現(xiàn)通過定義mindRadio對(duì)象的方式綁定在zm-radio對(duì)象上,顯示效果是能獲得期望結(jié)果,那問題很明顯,對(duì)象屬性的創(chuàng)建有問題

<zm-radiolabel="單選:"
:editable="false"
:dict-data="mindData"
:content.sync="mindRadio.content"
v-model="mindRadio.value"></zm-radio>

data() {
return{
mindRadio: {
code:'',
value:''
}
}

經(jīng)過vue官方資料查詢,提供了vue.set方法,通過以下方法解決了設(shè)置對(duì)象屬性的問題

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','')
}
})

總結(jié)原因:其實(shí)問題是vue實(shí)例對(duì)象不允許直接添加屬性或刪除屬性,需要通過set方式更新數(shù)據(jù)對(duì)象。

另一種實(shí)現(xiàn)方式,可以采用先給臨時(shí)對(duì)象tempData添加屬性,再賦值給mindData

以上這篇對(duì)VUE中的對(duì)象添加屬性就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

對(duì)VUE中的對(duì)象添加屬性

對(duì)VUE中的對(duì)象添加屬性:背景:在通過接口獲取數(shù)據(jù)集對(duì)象后,根據(jù)業(yè)務(wù)場景需要在數(shù)據(jù)集對(duì)象上增加額外的屬性 data中定義的數(shù)據(jù)集對(duì)象mindData格式示例如下 mindData: [ {label:'清醒',value:'清醒'}, {label:'朦朧',value:'朦朧'}, {label:'嗜睡',value:'
推薦度:
標(biāo)簽: 添加 中的 VUE
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top