由於組件和模塊一篇講不完,接着上一篇,繼續講組件和模塊javascript
<list class="list" @loadmore="fetch" loadmoreoffset="10">
<cell class="cell" v-for="num in lists"> <div class="panel"> <text class="text">{{num}}</text> </div> </cell>
</list>複製代碼
scoller用法跟list很像,我說說區別就好css
<scroller class="scroller">
<refresh class="refresh" @refresh="onrefresh" @pullingdown="onpullingdown" :display="refreshing ? 'show' : 'hide'">
<text class="indicator">Refreshing ...</text>
</refresh>
<div class="cell" v-for="num in lists">
<div class="panel">
<text class="text">{{num}}</text>
</div>
</div>
</scroller>複製代碼
在官方demo裏面,refresh是有兩個事件.html
<refresh class="refresh" @refresh="onrefresh" @pullingdown="onpullingdown" :display="refreshing ? 'show' : 'hide'">複製代碼
不過list自帶加載功能@loadmore屬性,所refresh下拉刷新組件會用的比較少。loading組件和refresh是相反的,一個是下拉刷新,一個是下拉刷新前端
switch只有ios系統下才能夠vue數據驅動試圖。只有ios系統下才能很好的使用switch,其餘系統仍是不要使用switch,其餘系統想用,解決辦法就是自定義一個組件吧。vue
就說一點,文本域組件只有在app才能輸入。html5
也是三端不一樣一。
網頁不會自動輪播,auto-play爲true也沒用java
<slider class="slider" interval="3000" auto-play="true">
<div class="frame" v-for="img in imageList"> <image class="image" resize="cover" :src="img.src"></image> </div>
</slider>複製代碼
indicator 組件用於顯示輪播圖指示器效果,必須充當 slider 組件的子組件使用,就是輪播圖的中的快速移動的點,可是點的顏色和大小在網頁端和移動端顯示效果不一樣ios
在weex中,幾乎全部的組件幾乎都支持通用事件,因此,最好記住全部的通用事件,特殊事件你能夠再查apiweb
<input> 和 <switch> 組件目前不支持 click 事件,請使用 change 或 input 事件來代替。複製代碼
weex 的事件跟網頁中的事件是不同的,徹底屬於原生的事件api
若是一個位於某個可滾動區域內的組件被綁定了 appear 事件,那麼當這個組件的狀態變爲在屏幕上可見時,該事件將被觸發。複製代碼
若是一個位於某個可滾動區域內的組件被綁定了 disappear 事件,那麼當這個組件被滑出屏幕變爲不可見狀態時,該事件將被觸發。複製代碼
viewappear 事件會在頁面就要顯示或配置的任何頁面動畫被執行前觸發,例如,當調用 navigator 模塊的 push 方法時,該事件將會在打開新頁面時被觸發。viewdisappear 事件會在頁面就要關閉時被觸發。
動畫模塊,相似咱們前端的transition屬性,可是他的動畫效果很弱,比前端的弱多了,能夠看看官網的demo,這裏沒有坑,放心使用
picker模塊用於數據選擇,日期選擇,時間選擇。(目前 H5 暫不支持該模塊)
要注意的是,picker模塊有兩種模式
咱們能夠經過 clipboard 模塊的 getString()、setString() 接口從系統的粘貼板獲取內容或者設置內容。複製代碼
setString(text):複製 //ctrl+c
getString:粘貼 //ctrl+v
由於app沒有dom節點的概念,就有了dom模塊,咱們能夠簡單操做一些dom,好比滾動到某個節點上,截取官網demo
css
<text class="text" :ref="'text'+index">{{name}}</text>
js
goto20 (count) {
const el = this.$refs.item20[0]
dom.scrollToElement(el, { offset: 0 })
}複製代碼
addRule是能夠爲dom 添加一條規則,目前支持自定義字體fontFace規則,構建自定義的font-family,能夠在text使用複製代碼
var domModule = weex.requireModule('dom');
domModule.addRule('fontFace', {
'fontFamily': "iconfont2",
'src': "url('http://at.alicdn.com/t/font_1469606063_76593.ttf')"
});複製代碼
tips: 其實按照vue數據驅動的思想,咱們是不推薦操做dom的,並且原聲app也沒有dom的概念,不到萬不得已,仍是少操做dom
還記得咱們前面用過的 a組件嗎,假如我點擊a標籤跳轉到了一個新的頁面,咱們怎麼回退到原來的頁面呢?就能夠用navigator模塊的功能,這個模塊的功能有點像html5裏面的 history API
push對應瀏覽器的前進, pop對應瀏覽器的後退。
pop還有一個用途:當咱們在第一頁,pop還有關掉app的做用。
storage 是一個在前端比較經常使用的模塊,能夠對本地數據進行存儲、修改、刪除,而且該數據是永久保存的
等於前端的cookie,理論上它是無限制大小的,
storage 經常使用在一些被用戶常常查詢,可是又不頻繁更新的數據,好比搜索歷史、用戶的訂單列表等。搜索歷史通常狀況都是做爲本地數據存儲的,所以使用 storage 比較合適。而用戶訂單列表是須要本地存儲和服務端器檢索配合的場景。當一個用戶下單後,會常常查閱我的的訂單列表。可是,訂單的列表數據不是頻繁更新的,每每只有在收到貨品時,才更新「已簽收」,其他平時的狀態是「已發貨」。所以,可使用 storage 存儲訂單列表,能夠減小服務器的壓力,例如減小 SQL 查詢或者緩存的壓力。當用戶查看訂單詳情的時候,再更新數據狀態。
const storage = weex.requireModule('storage')
const modal = weex.requireModule('modal')
setItem () {
storage.setItem('name', 'Hanks', event => {
this.state = 'set success'
console.log('set success')
})
},
getItem () {
storage.getItem('name', event => {
console.log('get value:', event.data)
this.state = 'value: ' + event.data
})
},
removeItem () {
storage.removeItem('name', event => {
console.log('delete value:', event.data)
this.state = 'deleted'
})
},
getAll () {
storage.getAllKeys(event => {
// modal.toast({ message: event.result })
if (event.result === 'success') {
modal.toast({
message: 'props: ' + event.data.join(', ')
})
}
})
}複製代碼
是對前面web組件的一個應用,
一系列的
作出來如下效果,例如,模仿一個瀏覽器的功能,有輸入地址,刷新,前進的功能。挺好用的
這個要有安卓的基礎,我真的hold不住,有興趣的同窗能夠去看看官網,由於這是監聽陀螺儀,定位信息之類的事件。
到這裏,全部組件和模塊都已經說完了,我把不少內建組件和模塊,都對應着html來說,雖然講的不太好,但仍是把官網生澀難懂的名詞,淺析了一下,我的以爲對前端工程師仍是很友好的 ,從環境搭建到api的踩坑(真的挺多坑),過程真的比較辛苦,不過,學了weex纔有一種掌握vue全家桶的感受啊,仍是那句話,若是你會vue.js,都是so easy.
附上本系列以往連接: