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

Vue中input被賦值后,無法再修改編輯的問題及解決

 更新時間:2022年04月24日 10:18:13   作者:K.P  
這篇文章主要介紹了Vue中input被賦值后,無法再修改編輯的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

input被賦值后,無法再修改編輯

我們直入主題

上面是我司的業(yè)務(wù)邏輯圖,使用elementui框架,如圖,請求數(shù)據(jù)賦值后,不僅有檢測報錯信息,而且還有無法修改編輯的問題。

起初以為是我的設(shè)置的對象問題,困擾我許久。

后來,翻閱了大佬的文章才了解。

 <el-form ref="formInline" :inline="true" :rules="rules" :model="formInline" label-position="right" size="medium">
	<el-form-item label="SIM卡號" prop="icsim">
        <el-input v-model.number="formInline.icsim" maxlength="18" />
    </el-form-item>
    <el-form-item label="ICCID碼" prop="iccid">
        <el-input v-model="formInline.iccid" />
    </el-form-item>
    <el-form-item label="激活時間" prop="start">
        <el-date-picker v-model="formInline.start" value-format="yyyy-MM-dd HH:mm:ss" style="width:200px" placeholder="選擇日期"/>
    </el-form-item>
    <el-form-item label="服務(wù)到期時間" prop="end">
        <el-date-picker v-model="formInline.end" value-format="yyyy-MM-dd HH:mm:ss" style="width:200px" placeholder="選擇日期"/>
    </el-form-item>
</el-form>
export default {
  name: 'formInline',
  data () {
    return {
      formInline: {}
    }
  },
  methods: {
    // vue 請求數(shù)據(jù)
	async getSimData(params) {
      const res = await simInfoByVid(params)
      const { sid, iccid, start, end, storage, icsim, vid } = res.data
      this.formInline.sid = sid
      this.formInline.iccid = iccid
      this.formInline.start = start
      this.formInline.end = end
      this.formInline.storage = storage
      this.formInline.icsim = icsim
      this.formInline.vid = vid
    }
  }
}

上面的代碼是我第一次寫的代碼,使用上面的方法,導致input框或者日期選擇框無法再編輯。

根據(jù)官方文檔定義:如果在實例創(chuàng)建之后添加新的屬性到實例上,它不會觸發(fā)視圖更新

根據(jù)大佬的文章,總結(jié)了兩個辦法:

方法一

由此Vue實例創(chuàng)建時,formInline的屬性名并未聲明,因此Vue就無法對屬性執(zhí)行 getter/setter 轉(zhuǎn)化過程,導致formInline屬性不是響應式的,因此無法觸發(fā)視圖更新。

解決的方式有兩種,第一種就是顯示的聲明formInline這個對象的屬性,如:

data () {
    return {
      formInline: {
      	sid: '',
      	iccid: '', 
      	start: '', 
      	end: '', 
      	storage: '', 
      	icsim: '', 
      	vid: ''
		}
    }

方法二

使用Vue的全局API: $set()賦值:

async getSimData(params) {
      const res = await simInfoByVid(params)
      const { sid, iccid, start, end, storage, icsim, vid } = res.data
      this.$set(this.formInline, 'sid', sid)
      this.$set(this.formInline, 'iccid', iccid)
      this.$set(this.formInline, 'start', start)
      this.$set(this.formInline, 'end', end)
      this.$set(this.formInline, 'storage', storage)
      this.$set(this.formInline, 'icsim', icsim)
    }

vue綜合問題歸納input框賦值后不能進行編輯

項目場景

項目場景:前端實現(xiàn)查看編輯功能的時候會出現(xiàn), input框賦值后input框不能進行編輯,編輯之后自動取消,驗證無法進行取消

問題描述

數(shù)據(jù)代碼:

<el-textarea
                  v-model="drawerForm.msg"
                  placeholder="請輸入功能描述"
                  :rows="3"
                  allowClear
                ></el-textarea>

js:

export default {
? name: 'drawerForm',
? data () {
? ? return {
? ? ? drawerForm: {}
? ? }
? },
? methods: {
? ? handleEditHelloForm () {
? ? ? ? // 模擬編輯功能需要數(shù)據(jù)回顯
? ? ? ? this.helloForm.msg = 'hello 我是drawerForm中的msg值'
? ? }
? }
}

原因分析

  • 空input框進行賦值后,不存在setter和getter方法,導致無法實現(xiàn)雙向綁定
  • 由此Vue實例創(chuàng)建時,drawerForm.屬性名并未聲明,因此Vue就無法對屬性執(zhí)行 getter/setter 轉(zhuǎn)化過程,導致drawerForm屬性不是響應式的,因此無法觸發(fā)視圖更新。

解決方案

第一種就是顯示的聲明drawerForm這個對象的屬性,如: 

  data () {
    return {
      drawerForm: {
         msg:""
      }
    }
  },

使用vue的全局方法: this.$set(data, property, value)

data為要修改的對象,property為要添加的屬性,value就是這個屬性的值? ? handleEditHelloForm () {
? ? ? ? // 模擬編輯功能需要數(shù)據(jù)回顯
? ? ? ? Vue.set(this.helloForm,'msg', 'hello 我是drawerForm中的msg')
? ? }

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。 

相關(guān)文章

最新評論

阿鲁科尔沁旗| 汶川县| 手机| 福泉市| 田阳县| 天津市| 乌拉特中旗| 鄂伦春自治旗| 奇台县| 娄烦县| 涞水县| 通化县| 徐州市| 城固县| 霍州市| 庄河市| 鹤岗市| 翁牛特旗| 万安县| 扎鲁特旗| 和田县| 汝南县| 丁青县| 喀什市| 福安市| 慈溪市| 长宁县| 苏尼特左旗| 偃师市| 灵武市| 武威市| 黄平县| 栾城县| 乌兰浩特市| 孝感市| 宁明县| 镇原县| 牟定县| 陇川县| 宁明县| 田林县|