v0.6.1+
To be rendered properly, the refresh/loading Components must appear inside the Scroller Component or the List Component.
Any other components, like the text and img components, can be put inside the refresh component. And there is a special component named loading-indicator used only inside the refresh or the loading components.
common styles: check out common styles for components
<template> <scroller class="scroller"> <div class="cell" v-for="num in lists"> <div class="panel"> <text class="text">{{num}}</text> </div> </div> <loading class="loading" @loading="onloading" :display="showLoading"> <text class="indicator">Loading ...</text> </loading> </scroller> </template> <script> const modal = weex.requireModule('modal') const LOADMORE_COUNT = 4 export default { data () { return { showLoading: 'hide', lists: [1, 2, 3, 4, 5] } }, methods: { onloading (event) { modal.toast({ message: 'loading', duration: 1 }) this.showLoading = 'show' setTimeout(() => { const length = this.lists.length for (let i = length; i < length + LOADMORE_COUNT; ++i) { this.lists.push(i + 1) } this.showLoading = 'hide' }, 1500) } } } </script> <style scoped> .panel { width: 600px; height: 250px; margin-left: 75px; margin-top: 35px; margin-bottom: 35px; flex-direction: column; justify-content: center; border-width: 2px; border-style: solid; border-color: #DDDDDD; background-color: #F5F5F5; } .text { font-size: 50px; text-align: center; color: #41B883; } .loading { justify-content: center; } .indicator { color: #888888; font-size: 42px; padding-top: 20px; padding-bottom: 20px; text-align: center; } </style>
To be rendered properly, the refresh/loading Components must appear inside the Scroller Component or the List Component.
Any other components, like the text and img components, can be put inside the refresh component. And there is a special component named loading-indicator used only inside the refresh or the loading components.
Other attributes please check out the common attributes.
common styles: check out common styles for components
onrefresh
: triggered when the scroller has been pulled downonpullingdown
: triggered when the scroller has been pulled down. you can get dy, pullingDistance, viewHeight, type
from onpullingdown event object.dy: the differencen between two scroll actions pullingDistance: the distance of pulling viewHeight: the height of refreshView type: "pullingdown" constant string type for this event
<template> <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> </template> <script> const modal = weex.requireModule('modal') export default { data () { return { refreshing: false, lists: [1, 2, 3, 4, 5] } }, methods: { onrefresh (event) { console.log('is refreshing') modal.toast({ message: 'refresh', duration: 1 }) this.refreshing = true setTimeout(() => { this.refreshing = false }, 2000) }, onpullingdown (event) { console.log('is onpulling down') modal.toast({ message: 'pulling down', duration: 1 }) } } } </script> <style scoped> .indicator { color: #888888; font-size: 42px; text-align: center; } .panel { width: 600px; height: 250px; margin-left: 75px; margin-top: 35px; margin-bottom: 35px; flex-direction: column; justify-content: center; border-width: 2px; border-style: solid; border-color: #DDDDDD; background-color: #F5F5F5; } .text { font-size: 50px; text-align: center; color: #41B883; } </style>