swipe组件

因为项目加载eslint的缘故也就没有像之前的项目一样引用swiper框架。
这个轮播图的组件文档实在是不敢恭维(尽管其他的文档也好不到哪里去),官方给出的参数真是少的可怜,一些方法也并没有提到。
官方的api如下图所示,你懂的:

仔细的看了的这个组件的example后,会找到一些常用的方法。

  1. 轮播默认不播放
    需要将auto的值设置为0

  2. 轮播图的手动控制
    利用vueref先绑定引用的swipe根标签。

<mt-swipe ref="swipe" class="swipe" :auto="0">
<mt-swipe-item v-for="img in images" :key="img.id">
<img :src="img.url"/>
</mt-swipe-item>
</mt-swipe>

然后利用ref绑定的swipe组件,我们就可以调用到其内部的一些控制方法:

this.$refs.swipe.next() // 转到下一张轮播图
this.$refs.swipe.prev() // 转到前一张轮播图

接下来恐怕就是我找到的最重要的方法:

监控当前轮播图激活的索引值

swipe组件的当前索引值被保存在了index之中
我们就可以利用刚才的方法,先在vue每次更新dom的时候将当前激活的索引值保存起来:

beforeUpdate () {
this.activeIndex = this.$refs.swipe.index
}

然后利用watch方法监控当前swipe的激活索引值就可以进行进行后续的处理了。

watch: {
activeIndex: function (val, oldVal) {
console.log('newIndex: %s, oldIndex: %s', val, oldVal)
// TODO
}
}

这样swipe组件的一些基本操作总算是填坑完毕了。

picker组件

picker组件也是有很多问题。话不多话,先上官方api:

继续针对slots对象数组的字段说明:

在使用过程之中我们会发现如果直接初始化级联picker中的二级初始值会有问题。
因为按照其demo之中的初始化数据方法,必须使用数组中的索引值做初始化处理。针对一级菜单做defaultIndex处理是没有问题,但是二级的话我们还需要将values值指向当前二级数组之中去。

addressSlots: [
{
flex: 1,
values: Object.keys(address),
className: 'slot1',
textAlign: 'center'
}, {
divider: true,
content: '-',
className: 'slot2'
}, {
flex: 1,
values: ['北京'],
className: 'slot3',
textAlign: 'center'
}
]

避免在created之中单独为addressSlots做数据处理,我们可以统一将一级和二级都指向默认的第一个参数,然后利用下面的方法做初始化处理:

 mounted () {
this.$nextTick(() => {
setTimeout(() => {
// 利用索引初始化默认选中的省份和城市
this.areaSlots[0].defaultIndex = provinceIndex // Number类型
this.areaSlots[2].defaultIndex = cityIndex
}, 20)
})
}

bug处理

Infinite scroll组件的加载多次问题

官方例子的方法在一次滚动后并不止加载一次,应该在loading之中屏蔽新的加载处理:

loadMore () {
this.loading = true
setTimeout(() => {
// TODO
this.loading = false
}, 2500)
}

进行改进:

loadMore () {
// 防止多次加载
if (this.loading) {
return false
}
this.loading = true
setTimeout(() => {
// TODO
this.loading = false
}, 2500)
}

tabContainer和loadMore的滑动冲突处理

虽然这两个滑动一起使用的效果很蛋疼,但是如果
tabContainer的高度值不能撑满整个屏幕的话,是无法在上下拉刷新的同时左右滑动的
需要使用css进行高度处理才可以进行左右滑动:

.mint-tab-container-wrap{
min-height: 617px; // 需要设置最小高度
}

Datetime picker不能正常弹出的问题

不知道是不是只有我才遇到了这个问题,死活不发通过官方的方法显示出来。
无奈之下查看源码,发现只好手动控制picker的显示了。
我们需要添加一个popup包裹起来要用的datetime picker,然后利用computed属性通过popup的激活来为当前日期时间控件改变display属性
这样就基本达到了想要的效果,实现代码如下:
html部分:

<mt-popup v-model="activePicker" position="bottom">
<mt-datetime-picker :style="{ display: showOrHide }" ref="picker" type="date" v-model="date" :start-date="new Date('2010-01-01')" @cancel="cancelPicker" @confirm="cancelPicker"></mt-datetime-picker>
</mt-popup>

js部分:

 
computed: {
showOrHide: function () {
if (this.activePicker) {
return 'block'
} else {
return 'none'
}
}
},
methods: {
cancelPicker () {
this.activePicker = false
}
} 原文链接:https://segmentfault.com/a/1190000009753447

最新文章

  1. Maven 整合FreeMarker使用
  2. 精神哥讲Crash(一):UnsatisfiedLinkError
  3. [No000013]在Office中关闭自动拼写检查和自动语法检查
  4. 简单CSS布局留用
  5. ReportDB数据库存储选型分析
  6. c运行库冲突问题
  7. [转载]MySQL将DateTime时间类型格式化
  8. day-9
  9. Vim的学习心得
  10. 启动tomcat时报classpath not found
  11. Spring Session - Spring Boot
  12. 【Leetcode】Sort List (Sorting)
  13. ios实现文字的自适应
  14. hibernate与mybatis的区别
  15. Java IO详解(六)------序列化与反序列化(对象流)
  16. hdu 5877 线段树(2016 ACM/ICPC Asia Regional Dalian Online)
  17. Java——代码复用(组合和继承)
  18. PyCharm Debug 调试
  19. ArrayUtil的创建和使用
  20. struts2、hibernate以及spring是如何配置的

热门文章

  1. (转载).NET的五层架构
  2. java.lang.RuntimeException: Canvas: trying to draw too large(107331840bytes) bitmap.
  3. Oracle中实现find_in_set
  4. mysql启动服务出错--发生系统错误 1067。
  5. Bzoj1496: [NOI2006]千年虫
  6. 用CSS隐藏页面元素的5种方法
  7. angular自定义指令解决IE89不支持input的placeholder属性
  8. 关于实现XX系统设计时所实现的质量属性战术
  9. 遍历查询结果集,update数据
  10. 【Leetcode】【Medium】Gray Code