最近想用vue做一個小東西,誰知道一開始就遇到了一個棘手的問題:
首先我想在頁面加載前通過ajax請求頁面展示所需要的信息,于是我在created鉤子函數里面請求了我想要的數據
created:function(){ var url="/indexitem"; var _self=this; $.get(url,function(data){ _self.items=data; }); $.get('/banner',function(data){ _self.banners=data; }); }這一步很順利,接下來就是要將數據綁定到對應的元素中,我在這里需要將請求得到的圖片地址綁定到輪播圖對應的元素中,
我這里采用的是mui框架中提供的圖片輪播(移動端,支持手勢滑動),問題恰恰就這里:
<div id="slider" class="mui-slider" @click="greet()"> <div class="mui-slider-group mui-slider-loop"> <div class="mui-slider-item mui-slider-item-duplicate"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" :style="{backgroundImage: 'url(' + banners[banners.length-1].src+ ')',backgroundSize:'cover'}"></a></div> <div class="mui-slider-item" v-for="cc in banners"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" :style="{backgroundImage: 'url(' + cc.src+ ')',backgroundSize:'cover'}"></a></div> <div class="mui-slider-item mui-slider-item-duplicate"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" :style="{backgroundImage:'url('+banners[0].src+')',backgroundSize:'cover'}"></a></div> </div> <div class="mui-slider-indicator"> <div class="mui-indicator mui-active"></div> <div class="mui-indicator"></div> <div class="mui-indicator"></div> <div class="mui-indicator"></div> </div> </div>我綁定完數據之后,發現輪播圖失效了,因為我之前用原生js寫的時候遇到過同樣的問題,我當時的解決辦法是等頁面加載完成后重新進行滑動初始化,但是今天用vue我蒙了,試了很多生命周期函數也無法確保在頁面加載完成后進行初始化。
vue.js更多的希望是通過數據綁定來代替直接通過dom操作,而vue并沒有提供渲染完成的鉤子。
所以我今天的解決辦法是:setTimeout()
在實例化VUE對象后添加下面代碼:
setTimeout(function(){ console.log($('#slider').length); var gallery = mui('.mui-slider'); gallery.slider({ interval: 3000//自動輪播周期,若為0則不自動播放,默認為0; }); },1000);以上這篇VUE DOM加載后執行自定義事件的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。
新聞熱點
疑難解答