vue在el-dialog中this.$refs值為undefined問題

vue中元素上加上ref屬性取值,相當(dāng)于取整個元素的,和$("#id")類似。但是要用此屬性需要了解加載的時間,從官網(wǎng)上可以看到

關(guān)于 ref 注冊時間的重要說明:因?yàn)?ref 本身是作為渲染結(jié)果被創(chuàng)建的,在初始渲染的時候你不能訪問它們 - 它們還不存在!$refs 也不是響應(yīng)式的,因此你不應(yīng)該試圖用它在模板中做數(shù)據(jù)綁定。

一般用法就是在mounted方法中加入this.$nextTick

mounted() {
  this.$nextTick(() => { // 頁面渲染完成后的回調(diào)
    this.ul_Height=this.$refs.ulheight.offsetHeight
  })
}
//this.$refs.ulheight==undefined

但是如果$refs在el-dialog中用上述方法還是會undefined,如下:

<el-dialog
    class="fileLibraryDialog"
    title="文件庫"
    :visible.sync="fileLibraryData.isShow"
    >
    <ul ref="ulheight" class="groupTree">
        ……
    </ul>
 </el-dialog>

解決的方法就是在el-dialog中加入回調(diào)函數(shù)@open,然后在回調(diào)函數(shù)方法中用this.$nextTick。

<el-dialog
    class="fileLibraryDialog"
    @open="getUlHeight"
    title="文件庫"
    :visible.sync="fileLibraryData.isShow"
    >
    <ul ref="ulheight" class="groupTree">
        ……
    </ul>
 </el-dialog>
//js部分:
methods:{
  getUlHeight(){
    this.$nextTick(()=>{ 
      this.ul_Height=this.$refs.ulheight.offsetHeight
    })
  }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容