You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
114 lines
2.2 KiB
114 lines
2.2 KiB
<template> |
|
<div class="wrapper"> |
|
<list class="list"> |
|
<cell v-for="(item, index) in lists" :key="index" :ref="'item' + index" class="cell"> |
|
<text class="name">{{item.name}}:</text> |
|
<text class="content">{{item.content}}</text> |
|
</cell> |
|
</list> |
|
</div> |
|
</template> |
|
|
|
<script> |
|
export default { |
|
data() { |
|
return { |
|
lists: [], |
|
interval: null, |
|
yourTexts: [ |
|
{ |
|
name: '学员A', |
|
content: '老师讲的真好', |
|
}, { |
|
name: '学员B', |
|
content: 'uni-app值得学习', |
|
}, { |
|
name: '学员C', |
|
content: '老师,还有实战例子吗?', |
|
}, { |
|
name: '学员D', |
|
content: '老师,请问是不是要先学会vue才能学uni-app?', |
|
}, { |
|
name: '学员E', |
|
content: '受教了,uni-app太牛了', |
|
} |
|
], |
|
} |
|
}, |
|
created() { |
|
const vm = this; |
|
uni.$on('play-video', (data) => { |
|
if(data.status === 'open'){ |
|
this.addItem(); |
|
}else{ |
|
this.closeItem(); |
|
} |
|
}) |
|
}, |
|
beforeDestroy(){ |
|
uni.$off('play-video') |
|
this.closeItem() |
|
}, |
|
methods: { |
|
addItem() { |
|
const vm = this; |
|
vm.lists = [{ |
|
name: '学员E', |
|
content: '受教了,uni-app太牛了', |
|
}]; |
|
const dom = weex.requireModule('dom') |
|
vm.interval = setInterval(() => { |
|
if(vm.lists.length > 15) { |
|
vm.lists.unshift(); |
|
} |
|
vm.lists.push({ |
|
name: vm.yourTexts[vm.lists.length%4].name, |
|
content: vm.yourTexts[vm.lists.length%4].content |
|
}); |
|
if(vm.lists.length > 5) { |
|
vm.$nextTick(() => { |
|
if(vm.$refs['item' + (vm.lists.length - 1)]){ |
|
dom.scrollToElement(vm.$refs['item' + (vm.lists.length - 1)][0]); |
|
} |
|
}); |
|
} |
|
}, 3500); |
|
}, |
|
closeItem() { |
|
if(this.interval) clearInterval(this.interval); |
|
} |
|
} |
|
} |
|
</script> |
|
|
|
<style> |
|
.wrapper { |
|
position: relative; |
|
flex: 1; |
|
background-color: transparent; |
|
} |
|
.list { |
|
position: absolute; |
|
top: 0; |
|
left: 0; |
|
right: 0; |
|
bottom: 0; |
|
background-color: rgba(0, 0, 0, 0.7); |
|
} |
|
.cell { |
|
padding: 10rpx 0; |
|
flex-direction: row; |
|
flex-wrap: nowrap; |
|
} |
|
.name { |
|
flex: 0; |
|
font-size: 20rpx; |
|
margin-right: 20rpx; |
|
color: #FF5A5F; |
|
} |
|
.content { |
|
flex: 1; |
|
font-size: 20rpx; |
|
color: #F4F5F6; |
|
} |
|
</style>
|
|
|