最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

對VUE中的對象添加屬性

 更新時間:2018年09月18日 10:48:06   作者:feixiang3447  
今天小編就為大家分享一篇對VUE中的對象添加屬性,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

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

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

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

1) 通過post調(diào)用接口獲取minData對象,遍歷添加屬性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

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

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

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

搗鼓了很久,測試發(fā)現(xiàn)通過定義mindRadio對象的方式綁定在zm-radio對象上,顯示效果是能獲得期望結(jié)果,那問題很明顯,對象屬性的創(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è)置對象屬性的問題

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é)原因:其實問題是vue實例對象不允許直接添加屬性或刪除屬性,需要通過set方式更新數(shù)據(jù)對象。

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

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

相關(guān)文章

  • Element-ui?Dialog對話框基本使用

    Element-ui?Dialog對話框基本使用

    這篇文章主要為大家介紹了Element-ui?Dialog對話框基本使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • Vue中div contenteditable 的光標(biāo)定位方法

    Vue中div contenteditable 的光標(biāo)定位方法

    今天小編就為大家分享一篇Vue中div contenteditable 的光標(biāo)定位方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • vue實現(xiàn)input框禁止輸入標(biāo)簽

    vue實現(xiàn)input框禁止輸入標(biāo)簽

    這篇文章主要介紹了vue實現(xiàn)input框禁止輸入標(biāo)簽,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue awesome swiper異步加載數(shù)據(jù)出現(xiàn)的bug問題

    vue awesome swiper異步加載數(shù)據(jù)出現(xiàn)的bug問題

    這篇文章主要介紹了vue awesome swiper異步加載數(shù)據(jù)出現(xiàn)的bug問題,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-07-07
  • Vite處理html模板插件之vite-plugin-html插件使用

    Vite處理html模板插件之vite-plugin-html插件使用

    這篇文章主要給大家介紹了關(guān)于Vite處理html模板插件之vite-plugin-html插件使用的相關(guān)資料,Vite是一個現(xiàn)代化的前端構(gòu)建工具,而vite-plugin-html是Vite的一個插件,用于在構(gòu)建時自動生成HTML文件,需要的朋友可以參考下
    2023-10-10
  • swiper/vue 獲取 swiper實例方法詳解

    swiper/vue 獲取 swiper實例方法詳解

    在網(wǎng)上搜了一下如何調(diào)用swiper實例,大部分都是通過 swiperRef = new Swiper(‘.swiper’, options) 這種方法初始化swiper,然后直接能用 swiperRef 實例,這篇文章主要介紹了swiper/vue 獲取 swiper實例方法詳解,需要的朋友可以參考下
    2023-12-12
  • 在?Vue?項目中如何引用?assets?文件夾中的圖片(方式匯總)

    在?Vue?項目中如何引用?assets?文件夾中的圖片(方式匯總)

    Vue中引用assets文件夾中的圖片有多種方式,在.vue文件的模板部分,使用相對路徑或通過@別名引用圖片,在CSS中,通過相對路徑或@別名引用圖片作為背景,在JavaScript中,通過import語句導(dǎo)入圖片資源,并使用v-bind在模板中綁定顯示,這些方法均可有效管理和引用項目中的圖片資源
    2024-09-09
  • Vue 實現(xiàn)顯示/隱藏層的思路(加全局點擊事件)

    Vue 實現(xiàn)顯示/隱藏層的思路(加全局點擊事件)

    這篇文章主要介紹了Vue 實現(xiàn)顯示/隱藏層的思路(加全局點擊事件),本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • vue實現(xiàn)登錄類型切換

    vue實現(xiàn)登錄類型切換

    這篇文章主要為大家詳細介紹了vue實現(xiàn)登錄類型切換,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • Vue的指令中實現(xiàn)傳遞更多參數(shù)

    Vue的指令中實現(xiàn)傳遞更多參數(shù)

    這篇文章主要介紹了Vue的指令中實現(xiàn)傳遞更多參數(shù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05

最新評論

自治县| 子长县| 安吉县| 邯郸市| 澜沧| 滨海县| 嘉祥县| 叙永县| 勐海县| 新竹市| 门头沟区| 武定县| 电白县| 会东县| 兴安盟| 阜新| 任丘市| 吴江市| 南投市| 浮梁县| 丰原市| 班玛县| 开阳县| 天门市| 延边| 浮梁县| 古浪县| 贵溪市| 汉阴县| 琼海市| 通榆县| 景泰县| 宣城市| 新宾| 南昌市| 涞源县| 通海县| 永泰县| 峨眉山市| 石台县| 昆明市|