解决vue里iscroll(better-scroll)点击触发两次和初始化无法滚动问题!
生活随笔
收集整理的這篇文章主要介紹了
解决vue里iscroll(better-scroll)点击触发两次和初始化无法滚动问题!
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
這兩個(gè)插件我用過好幾次,有時(shí)候很順利,不順利的時(shí)候真的很麻煩,一直無法滾動(dòng),明明style里已經(jīng)有樣式了,就是滾動(dòng)不了。
先說下在vue里的三種的引入方式:
<script type="text/javascript" src="src/assets/js/iscroll.js"></script>
這種比較方便就是只需在main.js里import一次,如果是第二種的話,需要在使用的每個(gè)組件都import一次
html:
<mast v-show="mastspecificat" :class="{'network':mastspecificat}" @touchmove.prevent><div class="mast-specificat-list-scroll mast-scrollspecificat"><div class="mast-specificat-list" :class="{'mast-specificat-list-height':mastspecificat}"><div class="mast-specificat-product" v-if="specifications.active === 't' ? true : false" v-for="(specifications,index) in product.specs"> //循環(huán)的列表</div></div></div></mast>重點(diǎn)css,需要滾動(dòng)的容器不能設(shè)置高度,如下.mast-specificat-list這個(gè)滾動(dòng)容器不要設(shè)置高度,我是設(shè)置高度后一直不能滾動(dòng),另外滾動(dòng)的容器的子元素如果有浮動(dòng),父元素一定要清除浮動(dòng),另外當(dāng)左右兩邊都有滾動(dòng)的時(shí)候,不能用浮動(dòng),需要用絕對(duì)定位,否則滾動(dòng)會(huì)導(dǎo)致布局亂了:
.mast-specificat-list-scroll{height: 150px;overflow: hidden;}.mast-specificat-list{/*height: 210px;*//*overflow: auto;*/-webkit-overflow-scrolling:touch;}因?yàn)閔tml比較多,看著比較亂,html只需看css這兩個(gè)類,符合官網(wǎng)的html結(jié)構(gòu)即可
如果是異步獲取數(shù)據(jù)后,需要在異步成功后進(jìn)行初始化,例如:
show_category: function () {this.API.show_category().then((response) => {this.categorys = response;if(response.length > 0){this.get_product(response[0]['display_name'],response[0]['id']);}else{this.$store.state.mastloadding = false;mui.toast('沒有查詢到商品分類');}//拿到數(shù)據(jù),并賦值后(需要進(jìn)行監(jiān)聽數(shù)據(jù)的變化),進(jìn)行初始化let categorysscroll = new BScroll('.menu-content-slider',{scrollY: true,click: true}); }, (response) => {mui.toast('網(wǎng)絡(luò)錯(cuò)誤');});}需要注意下v-if和v-show,如果局部滾動(dòng)的容器是通過v-if顯示的,有可能會(huì)出現(xiàn)初始化的時(shí)候找不到DOM,使用v-show即可
使用iscroll后,子元素點(diǎn)擊事件會(huì)觸發(fā)兩次,可以如下解決:
//屏蔽掉click事件,自定義tap事件 let menuscroll = new BScroll('.mast-cart-content-parent',{scrollY: true,// click: truetap:"set_cart,changeMastDisplay" }); <span class="confirm-product-price" @tap="changeMastDisplay({'name':'mastflavour','product':product})"></span> <span class="menu-product-reduce" @tap="set_cart(product,{handle:1})"></span>總結(jié)
以上是生活随笔為你收集整理的解决vue里iscroll(better-scroll)点击触发两次和初始化无法滚动问题!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: token简述
- 下一篇: vue动态点击切换css样式且子元素动态