vue.js 1.0中用v-for遍历出的li中的@click事件在移动端无效
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了vue.js 1.0中用v-for遍历出的li中的@click事件在移动端无效,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5836字,纯文字阅读大概需要9分钟。
内容图文
在vue.js使用v-for遍历出的li中的@click事件在移动端无效,在网页端可以执行,代码如下
<template> <div class="rating-section" ref="ratingSection"> <div> <div class="comprehensive"> <div class="score"> <div class="mark">{{seller.score}}</div> <div class="text">综合评分</div> <div class="compare">高于周边商家{{seller.rankRate}}%</div> </div> <div class="service"> <div class="service-item"> <span class="lable-text">服务态度</span> <div class="star-container"> <star :size="12" :score="seller.serviceScore"></star> </div> <span class="inline-score">{{seller.serviceScore}}</span> </div> <div class="service-item"> <span class="lable-text">菜品评价</span> <div class="star-container"> <star :size="12" :score="seller.foodScore"></star> </div> <span class="inline-score">{{seller.foodScore}}</span> </div> <div class="service-item"> <span class="lable-text">送达时间</span> <span class="delivery">{{seller.deliveryTime}}分钟</span> </div> </div> </div> <div class="rating-container"> <div class="setter"> <rating-select :options="options"></rating-select> </div> <div class="rating-setting" @click="onlyContentClick"> <span class="icon-check_circle" :class="{‘highlight‘:onlyContent}"></span> <span class="text">只看有内容的评价</span> </div> <div class="rating-list"> <ul> <li class="item-rating" v-for="item in ratings"> <div class="avart"> <img :src="item.avatar"> </div> <div class="content"> <div class="username">{{item.username}}</div> <div class="user-score"> <div class="score"> <star :size="12" :score="item.score"></star> </div> <span v-show="item.deliveryTime>0">{{item.deliveryTime}}分钟送达</span> </div> <div class="text">{{item.text}}</div> <div class="thumbs-up"> <span class="split" :class="[{‘icon-thumb_down‘:item.rateType===0},{‘icon-thumb_up‘:item.rateType===1}]"></span> <span class="thumb-item split" v-for="r in item.recommend">{{r}}</span> </div> </div> </li> </ul> </div> </div> </div> </div> </template> <script> import BScroll from ‘better-scroll‘; import RatingSelect from ‘../ratingSelect/ratingSelect.vue‘; import star from ‘../star/star.vue‘; const ERROR_OK = 0; export default{ data () { return { ratings: [], onlyContent: false, options: [ { text: ‘全部‘, count: 57, type: ‘positive‘ }, { text: ‘满意‘, count: 47, type: ‘positive‘ }, { text: ‘不满意‘, count: 10, type: ‘negative‘ }] }; }, created () { this.loadData(); }, props: { seller: { type: Object, default () { return {}; } } }, components: {star, RatingSelect}, methods: { onlyContentClick () { this.onlyContent = !this.onlyContent; }, loadData () { this.$http.get(‘/getRatings‘).then(res => { if (res.body.code === ERROR_OK) { this.ratings = res.body.result; this.$nextTick(() => { if (!this.ratingScroll) { this.initScroll(); } else { this.ratingScroll.refresh(); } }); } }); }, initScroll () { this.ratingScroll = new BScroll(this.$refs.ratingSection, { click: true//better-scroll 默认会阻止浏览器的原生 click 事件。当设置为 true,better-scroll 会派发一个 click 事件 }); } } }; </script> <style scoped lang="stylus" rel="stylesheet/stylus"> .rating-section position absolute; top 176px; bottom 0px; overflow hidden; width 100%; font-size 0; background-color rgb(243, 245, 247); .comprehensive display flex; padding 18px 0; background-color #FFF; border-bottom 1px solid rgba(7, 17, 27, .1); .score padding 0px 16px; border-right 1px solid rgba(7, 17, 27, .1); text-align center; .mark margin-bottom 6px; line-height 28px; font-size 24px; color rgb(255, 153, 0); .text margin-bottom 8px; line-height 12px; font-size 12px; color rgb(7, 17, 27); .compare margin-bottom 6px; line-height 10px; font-size 10px; color rgba(7, 17, 27, .6); .service flex 1; padding-left 16px; .service-item margin-bottom 8px; line-height 18px; font-size 12px; .lable-text color rgb(7, 17, 27); .inline-score color rgb(255, 153, 0); .delivery color rgb(147, 153, 159); .star-container display inline-block; &:last-child margin-bottom 0; .rating-container margin-top 18px; background-color #fff; border-top 1px solid rgba(7, 17, 27, .1); .setter padding 0 18px; border-bottom 1px solid rgba(7, 17, 27, .1); .rating-setting padding 12px 18px; font-size 0; color rgb(147, 153, 159); .icon-check_circle margin-right 4px; font-size 24px; &.highlight color #00c850; .text font-size 12px; line-height 24px; vertical-align top; .rating-list padding 18px 18px 0px 18px; border-top 1px solid rgba(7, 17, 27, .1); .item-rating display flex; padding 18px 0; font-size 12px; border-bottom 1px solid rgba(7, 17, 27, .1); &:first-child padding-top 0; .avart margin-right 12px; img width 28px; height 28px; border-radius 50%; .content font-size 10px; line-height 12px; .username color rgb(7, 17, 27); .user-score color rgb(147, 153, 159); .score display inline-block; .text margin-bottom 7px; font-size 12px; line-height 18px; color rgb(7, 17, 27); .thumbs-up .split margin-right 8px; &:last-child margin-right 0; .icon-thumb_up color #00a0dc; .icon-thumb_down color rgb(183, 187, 191); .thumb-item display inline-block; padding 0px 6px; margin-bottom 4px; line-height 16px; font-size 9px; color rgb(147, 153, 159); border-radius 2px; background-color rgb(255, 255, 240, .1); border 1px solid rgba(7, 17, 27, .1); </style>
应该是你使用了better-scroll的原因,默认它会阻止touch事件。所以在配置中需要加上click: true
具体的配置还可以查看 https://github.com/ustbhuangyi/better-scroll
原文:http://www.cnblogs.com/liaojie970/p/7638266.html
内容总结
以上是互联网集市为您收集整理的vue.js 1.0中用v-for遍历出的li中的@click事件在移动端无效全部内容,希望文章能够帮你解决vue.js 1.0中用v-for遍历出的li中的@click事件在移动端无效所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。