vue.js 1.0中用v-for遍历出的li中的@click事件在移动端无效
在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
vue.js 1.0中用v-for遍历出的li中的@click事件在移动端无效的更多相关文章
- v-for遍历出的元素上添加click事件,获取对应元素上的属性id值
<span v-for="(n,nav) in floorList" data-id="{{nav.itemId}}" v-on:click=" ...
- 还学的动吗? 盘点下Vue.js 3.0.0 那些让人激动的功能
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文出处:https://blog.bitsrc.io/vuejs-3-0-0-beta-features- ...
- 窥探Vue.js 2.0 - Virtual DOM到底是个什么鬼?
引言 你可能听说在Vue.js 2.0已经发布,并且在其中新添加如了一些新功能.其中一个功能就是"Virtual DOM". Virtual DOM是什么 在之前,React和Em ...
- 窥探Vue.js 2.0
title: 窥探Vue.js2.0 date: 2016-09-27 10:22:34 tags: vue category: 技术总结 --- 窥探Vue.js2.0 令人兴奋的Vue.js 2. ...
- Vue.js 2.0 参考手册.CHM下载
下载地址 Vue.js 2.0 参考手册.CHM下载链接: http://pan.baidu.com/s/1kVbhd4b 密码: wxfh
- Vue.js 2.0版
Vue.js 2.0版升级,更改了好多方法或指令 new Vue({ el:'#demo', data:{ msg:"vue2.0" } }) v-model lazy numbe ...
- Vue.js 2.0 和 React、Augular
Vue.js 2.0 和 React.Augular 引言 这个页面无疑是最难编写的,但也是非常重要的.或许你遇到了一些问题并且先前用其他的框架解决了.来这里的目的是看看Vue是否有更好的解决方案.那 ...
- 基于Vue.js 2.0 + Vuex打造微信项目
一.项目简介 基于Vue + Vuex + Vue-router + Webpack 2.0打造微信界面,实现了微信聊天.搜索.点赞.通讯录(快速导航).个人中心.模拟对话.朋友圈.设置等功能. 二. ...
- vue.js 2.0 官方文档学习笔记 —— 01. vue 介绍
这是我的vue.js 2.0的学习笔记,采取了将官方文档中的代码集中到一个文件的形式.目的是保存下来,方便自己查阅. !官方文档:https://cn.vuejs.org/v2/guide/ 01. ...
随机推荐
- Redis核心解读(转)
原文:Redis核心解读 Redis是知名的键值数据库,它广泛用于缓存系统.关于Redis的信息已经不用我多介绍了.这个系统的Redis文章主要从另外一个角度关注,Redis作为一个开源项目,短短2W ...
- Pycharm选中代码无法Backspace直接删除
现象 如图,选中代码后,按习惯来说,直接Backspace就可以删除被选中代码. 但选中后再按“Backspace”,只会改变(扩选)选中范围. 解决 点击“工具栏”里的“Tool”,去掉勾选的Vim ...
- tornado.web.StaticFileHandler
tornado.web.StaticFileHandler 源代码中的解释 class StaticFileHandler(RequestHandler): """A s ...
- Event对象、队列、multiprocessing模块
一.Event对象 线程的一个关键特性是每个线程都是独立运行且状态不可预测.如果程序中的其他线程需要通过判断某个线程的状态来确定自己下一步的操作,这时线程同步问题就 会变得非常棘手.为了解决这些问题, ...
- Python 模块之 xlrd (Excel文件读写)
# 1. 导入模块 import xlrd # 2.打开Excel文件读取数据 data = xlrd.open_workbook('excelFile.xls') # 3. 使用技巧 # 3.1 获 ...
- CDN 环境下获取用户IP方法
CDN 环境下获取用户IP方法 1 cdn 自定义header头的X-Real-IP,在后端使用$http_x_real_ip获得 proxy_set_header X-Real-IP $remote ...
- 第一课 C语言简明教程
1序言: 1与Java.C#等高级语言相比,C语言使用简单但是也非常重要更容易出错,到目前为止基本上操作系统的内核代码超过百分之九十使用C语言完成,因此学好C语言是学好计算机这门课程的基础,特别是进入 ...
- 和为定值的m个数
和为定值的m个数 np 问题(时间复杂度o(2**n)) code1: 暴力递归 解决 只有正数的情况 class Solution { private List<List<Integer ...
- CodeForces - 220B Little Elephant and Array (莫队+离散化 / 离线树状数组)
题意:N个数,M个查询,求[Li,Ri]区间内出现次数等于其数值大小的数的个数. 分析:用莫队处理离线问题是一种解决方案.但ai的范围可达到1e9,所以需要离散化预处理.每次区间向外扩的更新的过程中, ...
- CAS单点登录的原理
1.首先了解几个概念 1).TGC:Ticket-granting cookie,存放用户身份认证凭证的cookie,在浏览器和CAS Server间通讯时使用.2).TGT:ticket grant ...