xCalder 2019-06-03 10:21 采纳率: 0%
浏览 760

vue.js api请求成功,列表50条数据分页偶尔渲染不出来,有遇到的吗

经排查,不是vue.js 的问题,是有新内容的时候,输出json之前多了个调试的输出。

vue.js api请求成功,列表50条数据分页偶尔渲染不出来,有遇到的吗

偶尔会发生v-for下的内容空白,api 返回json 数据正确

无报错信息

代码



import paginate from './paginate' import Video from 'video.js' import 'video.js/dist/video-js.css' export default { data (){ return { videos: [], current_page: '', to: '', total: '', last_page: '', from: '', with_url: '', lang: '', num: 0, num_total: 0, num_limit: 10, data_videos: [] } }, components: { 'paginate': paginate, Video }, computed: { }, created:function(){ this.getVideos(); }, mounted (){ window.addEventListener('scroll',this.handleScroll,true);//监听shu标事件,再渲染另40条 }, methods:{ getVideos () { axios.get('/api/videos/list?offset=50&locale='+locale+'&page='+page+'&keyword='+keyword).then(response => { if(response.data.status){ this.lang = response.data.local; let result = response.data.data; let Seo = response.data; this.json_ld = Seo.json_ld; document.querySelector('title').innerHTML = Seo.title; document.getElementById('json_ld').innerHTML = Seo.json_ld; document.querySelector('meta[name=keywords]').setAttribute('content', Seo.keywords); document.querySelector('meta[name=description]').setAttribute('content', Seo.description); let videos = result.data; this.data_videos = videos; this.videos = videos.slice(this.num * this.num_limit, (this.num + 1) * this.num_limit);//分段,每次渲染10条 this.num_total = videos.length; this.current_page = result.current_page; this.to = result.to; this.total = result.total; this.last_page = result.last_page; this.from = result.from; this.with_url = response.data.with_url; let _this=this setTimeout(function(){//在超大屏幕下没有滚动条,1秒后自动渲染 _this.num++; if(_this.num * _this.num_limit > _this.num_total){ return false; } _this.videos = _this.videos.concat(_this.data_videos.slice(_this.num * _this.num_limit, (_this.num + 1) * _this.num_limit)); }, 1000); } }); }, startPlay(id){ Video(id, {}, function onPlayerReady() { this.play(); document.getElementById(id).style.display = 'block'; document.getElementById(id+'_html5_api').style.display = 'block'; document.querySelector('img[class='+id+']').style.display = 'none'; }) }, stopPlay(id){ Video(id, {}, function onPlayerReady() { this.pause(); document.getElementById(id).style.display = 'none'; document.getElementById(id+'_html5_api').style.display = 'none'; document.querySelector('img[class='+id+']').style.display = 'block'; }) }, handleScroll(){ this.num++; if(this.num * this.num_limit > this.num_total){ return false; } this.videos = this.videos.concat(this.data_videos.slice(this.num * this.num_limit, (this.num + 1) * this.num_limit)); } } }
  • 写回答

1条回答 默认 最新

  • 「已注销」 2019-06-04 09:17
    关注

    有时候加载数据慢一点就会遇到这种情况
    最好就是加一个锁等数据加载完后再渲染页面

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!