123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- <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>
|