more-movie.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. var app = getApp()
  2. var util = require('../../../utils/util.js')
  3. Page({
  4. data: {
  5. movies: {},
  6. navigateTitle: "",
  7. requestUrl: "",
  8. totalCount: 0,
  9. isEmpty: true,
  10. hiddenLoading:false,
  11. disabledRemind:false
  12. },
  13. onLoad: function (options) {
  14. var category = options.category;
  15. this.data.navigateTitle = category;
  16. var dataUrl = "";
  17. switch (category) {
  18. case "正在热映":
  19. dataUrl = app.globalData.doubanBase +
  20. "/v2/movie/in_theaters";
  21. break;
  22. case "即将上映":
  23. dataUrl = app.globalData.doubanBase +
  24. "/v2/movie/coming_soon";
  25. break;
  26. case "豆瓣Top250":
  27. dataUrl = app.globalData.doubanBase + "/v2/movie/top250";
  28. break;
  29. }
  30. wx.setNavigationBarTitle({
  31. title: category
  32. })
  33. this.data.requestUrl = dataUrl;
  34. util.http(dataUrl, this.processDoubanData)
  35. },
  36. onPullDownRefresh: function (event) {
  37. var refreshUrl = this.data.requestUrl +
  38. "?star=0&count=20"
  39. this.data.movies = {};
  40. this.data.isEmpty = true;
  41. this.data.totalCount = 0;
  42. util.http(refreshUrl, this.processDoubanData);
  43. wx.showNavigationBarLoading();
  44. },
  45. onReachBottom: function (event) {
  46. // 上滑加载
  47. var nextUrl = this.data.requestUrl +
  48. "?start=" + this.data.totalCount + "&count=20";
  49. util.http(nextUrl, this.processDoubanData)
  50. wx.showNavigationBarLoading()
  51. },
  52. processDoubanData: function (moviesDouban) {
  53. var movies = [];
  54. //没有更多啦
  55. if(moviesDouban.subjects.length<=0){
  56. var _this = this;
  57. if(!_this.data.disabledRemind){
  58. _this.setData({
  59. disabledRemind: true
  60. });
  61. setTimeout(function(){
  62. _this.setData({
  63. disabledRemind: false
  64. });
  65. }, 2000);
  66. }
  67. }
  68. for (var idx in moviesDouban.subjects) {
  69. var subject = moviesDouban.subjects[idx];
  70. var title = subject.title;
  71. if (title.length >= 6) {
  72. title = title.substring(0, 6) + "...";
  73. }
  74. var score = subject.rating.average + "";
  75. var temp = {
  76. stars: util.convertToStarsArray(subject.rating.stars),
  77. title: title,
  78. average: score.length == 1 ? subject.rating.average + '.0' : subject.rating.average,
  79. coverageUrl: subject.images.large,
  80. movieId: subject.id
  81. }
  82. movies.push(temp)
  83. }
  84. var totalMovies = {}
  85. //如果要绑定新加载的数据,那么需要同旧有的数据合并在一起
  86. if (!this.data.isEmpty) {
  87. totalMovies = this.data.movies.concat(movies);
  88. }
  89. else {
  90. totalMovies = movies;
  91. this.data.isEmpty = false;
  92. }
  93. this.setData({
  94. movies: totalMovies
  95. });
  96. this.data.totalCount += 20;
  97. wx.hideNavigationBarLoading();
  98. wx.stopPullDownRefresh()
  99. this.setData({
  100. hiddenLoading:true
  101. })
  102. },
  103. onReady: function (event) {
  104. wx.setNavigationBarTitle({
  105. title: this.data.navigateTitle
  106. })
  107. },
  108. onMovieTap: function (event) {
  109. var movieId = event.currentTarget.dataset.movieid;
  110. wx.navigateTo({
  111. url: '../movie-detail/movie-detail?id=' + movieId
  112. })
  113. },
  114. })