淺談mint-ui 填坑之路
近期上手vue的移動(dòng)端項(xiàng)目,舍棄了之前自己相對熟悉的mui框架,改為用餓了么團(tuán)隊(duì)為了vue量身定做的mint-ui框架。
之前開發(fā)的時(shí)候覺得mui的文檔就足夠坑爹了,但當(dāng)我開始閱讀mint-ui這個(gè)文檔后才發(fā)現(xiàn)自己真是太年輕了...
針對一些自己遇到的問題,特此記錄成文檔,方便日后使用。
swipe組件
因?yàn)轫?xiàng)目加載eslint的緣故也就沒有像之前的項(xiàng)目一樣引用swiper框架。
這個(gè)輪播圖的組件文檔實(shí)在是不敢恭維(盡管其他的文檔也好不到哪里去),官方給出的參數(shù)真是少的可憐,一些方法也并沒有提到。
官方的api如下圖所示,你懂的:
仔細(xì)的看了的這個(gè)組件的example后,會找到一些常用的方法。
1、輪播默認(rèn)不播放
需要將auto的值設(shè)置為0
2、輪播圖的手動(dòng)控制
利用vue的ref先綁定引用的swipe根標(biāo)簽。
<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組件,我們就可以調(diào)用到其內(nèi)部的一些控制方法:
this.$refs.swipe.next() // 轉(zhuǎn)到下一張輪播圖 this.$refs.swipe.prev() // 轉(zhuǎn)到前一張輪播圖
接下來恐怕就是我找到的最重要的方法:監(jiān)控當(dāng)前輪播圖激活的索引值
swipe組件的當(dāng)前索引值被保存在了index之中
我們就可以利用剛才的方法,先在vue每次更新dom的時(shí)候?qū)?dāng)前激活的索引值保存起來:
beforeUpdate () { this.activeIndex = this.$refs.swipe.index }
然后利用watch方法監(jiān)控當(dāng)前swipe的激活索引值就可以進(jìn)行進(jìn)行后續(xù)的處理了。
watch: { activeIndex: function (val, oldVal) { console.log('newIndex: %s, oldIndex: %s', val, oldVal) // TODO } }
這樣swipe組件的一些基本操作總算是填坑完畢了。
picker組件
picker組件也是有很多問題。話不多話,先上官方api:
繼續(xù)針對slots對象數(shù)組的字段說明:
在使用過程之中我們會發(fā)現(xiàn)如果直接初始化級聯(lián)picker中的二級初始值會有問題。
因?yàn)榘凑掌鋎emo之中的初始化數(shù)據(jù)方法,必須使用數(shù)組中的索引值做初始化處理。針對一級菜單做defaultIndex
處理是沒有問題,但是二級的話我們還需要將values值指向當(dāng)前二級數(shù)組之中去。
addressSlots: [ { flex: 1, values: Object.keys(address), className: 'slot1', textAlign: 'center' }, { divider: true, content: '-', className: 'slot2' }, { flex: 1, values: ['北京'], className: 'slot3', textAlign: 'center' } ]
避免在created之中單獨(dú)為addressSlots
做數(shù)據(jù)處理,我們可以統(tǒng)一將一級和二級都指向默認(rèn)的第一個(gè)參數(shù),然后利用下面的方法做初始化處理:
mounted () { this.$nextTick(() => { setTimeout(() => { // 利用索引初始化默認(rèn)選中的省份和城市 this.areaSlots[0].defaultIndex = provinceIndex // Number類型 this.areaSlots[2].defaultIndex = cityIndex }, 20) }) }
bug處理
Infinite scroll組件的加載多次問題
官方例子的方法在一次滾動(dòng)后并不止加載一次,應(yīng)該在loading之中屏蔽新的加載處理:
loadMore () { this.loading = true setTimeout(() => { // TODO this.loading = false }, 2500) }
進(jìn)行改進(jìn):
loadMore () { // 防止多次加載 if (this.loading) { return false } this.loading = true setTimeout(() => { // TODO this.loading = false }, 2500) }
tabContainer和loadMore的滑動(dòng)沖突處理
雖然這兩個(gè)滑動(dòng)一起使用的效果很蛋疼,但是如果tabContainer的高度值不能撐滿整個(gè)屏幕的話,是無法在上下拉刷新的同時(shí)左右滑動(dòng)的需要使用css進(jìn)行高度處理才可以進(jìn)行左右滑動(dòng):
.mint-tab-container-wrap{ min-height: 617px; // 需要設(shè)置最小高度 }
Datetime picker不能正常彈出的問題
不知道是不是只有我才遇到了這個(gè)問題,死活不發(fā)通過官方的方法顯示出來。
無奈之下查看源碼,發(fā)現(xiàn)只好手動(dòng)控制picker的顯示了。
我們需要添加一個(gè)popup包裹起來要用的datetime picker,然后利用computed屬性通過popup的激活來為當(dāng)前日期時(shí)間控件改變display屬性。
這樣就基本達(dá)到了想要的效果,實(shí)現(xiàn)代碼如下:
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 } }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- vue使用mint-ui實(shí)現(xiàn)下拉刷新和無限滾動(dòng)的示例代碼
- mint-ui的search組件在鍵盤顯示搜索按鈕的實(shí)現(xiàn)方法
- vue基于mint-ui的城市選擇3級聯(lián)動(dòng)的示例
- vue mint-ui 實(shí)現(xiàn)省市區(qū)街道4級聯(lián)動(dòng)示例(仿淘寶京東收貨地址4級聯(lián)動(dòng))
- 詳解vue mint-ui源碼解析之loadmore組件
- vue mint-ui學(xué)習(xí)筆記之picker的使用
- vue中配置mint-ui報(bào)css錯(cuò)誤問題的解決方法
- 使用mint-ui開發(fā)項(xiàng)目的一些心得(分享)
- vue.js中mint-ui框架的使用方法
- vue中mint-ui環(huán)境搭建詳細(xì)介紹
相關(guān)文章
WEB 前端開發(fā)中防治重復(fù)提交的實(shí)現(xiàn)方法
這篇文章主要介紹了JS WEB 前端開發(fā)中防治重復(fù)提交的實(shí)現(xiàn)方法,涉及到表單提交的幾種方式介紹,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-10-10js之完全兼容ie與firefox的拖動(dòng)層代碼[測試好用]
經(jīng)測試,這個(gè)拖到效果不錯(cuò),多瀏覽器支持。方便做網(wǎng)站的朋友使用2008-10-10深入淺出ES6新特性之函數(shù)默認(rèn)參數(shù)和箭頭函數(shù)
這篇文章主要介紹了深入淺出ES6新特性之函數(shù)默認(rèn)參數(shù)和箭頭函數(shù) 的相關(guān)資料,需要的朋友可以參考下2016-08-08JS實(shí)現(xiàn)的哈夫曼編碼示例【原始版與修改版】
這篇文章主要介紹了JS實(shí)現(xiàn)的哈夫曼編碼,結(jié)合實(shí)例形式分析了基于JavaScript定義、使用哈夫曼樹進(jìn)行編碼、解碼等相關(guān)操作技巧,需要的朋友可以參考下2018-04-04JavaScript實(shí)現(xiàn)點(diǎn)擊圖片翻轉(zhuǎn)效果
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)點(diǎn)擊圖片翻轉(zhuǎn)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10js原生跨域_用script標(biāo)簽的簡單實(shí)現(xiàn)
下面小編就為大家?guī)硪黄猨s原生跨域_用script標(biāo)簽的簡單實(shí)現(xiàn)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-09-09