【vue】解決使用vue,導致jq插件失效的問題


我們常常發現,靜態頁面的插件效果還好好的,但在使用vue進行數據交互時,插件功能卻失效了。

問題分析:

這根vue的生命周期有關,vue生命周期分為以下幾個周期。

  • beforeCreate
  • created
  • beforeMount
  • mounted
  • beforeUpdate
  • updated
  • beforeDestroy
  • destroyed

當mounted時,才完成掛載,在此之后的各種插件程序運行時,才有效果。

所以,插件程序與vue程序並行,vue實例還未創建,所以插件無法獲取dom元素,插件功能也就失效了。

 

解決辦法:

情況1:如果使用插件的dom元素,不是ajax異步請求來的(寫死在HTML中)。

解決方式:把“插件程序”,放在mounted中。

1、封裝插件程序:

function init() { //你的插件程序,該代碼可以放在其他js文件上
}

 2、“插件程序”,放在vue程序的mounted(){}

mounted(){ init(); //插件程序,放在mounted中
},

 

情況2:如果使用插件的dom元素,是ajax異步請求來的。

解決方式:把“插件程序”,放在ajax請求成功后的success中,並用  this.$nextTick。

1、封裝插件程序:

function init() {
    //你的插件程序,該代碼可以放在其他js文件上
}

 2、“插件程序”,放在ajax的success中

success: function (data) {
_this.$nextTick(()
=>{
    init();
   });
},

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM