zoukankan      html  css  js  c++  java
  • 微信小程序实战–集阅读与电影于一体的小程序项目(五)

    21.电影页面数据绑定

    movies.js

    
    var app = getApp();
    Page({
      data: {
        inTheaters: {},
        comingSoon: {},
        top250: {},
      },
    
      /**
       * 生命周期函数--监听页面加载
       */
      onLoad: function (options) {
        var baseUrl = app.globalData.g_baseUrl;
        var inTheatersUrl = baseUrl +"/v2/movie/in_theaters" + "?start=0&count=3";
        var comingSoonUrl = baseUrl + "/v2/movie/coming_soon" + "?start=0&count=3";
        var top250Url = baseUrl + "/v2/movie/top250" + "?start=0&count=3";
        this.getMovieList(inTheatersUrl, "inTheaters")
        this.getMovieList(comingSoonUrl, "comingSoon");
        this.getMovieList(top250Url, "top250");
      },
    
      getMovieList(url, setKey) {
        var that = this
        wx.request({
          url: url,
          data: {},
          method: 'GET',
          header: {
            'content-type': 'json' // 默认值 application/json
          },
          success: function (res) {
            console.log(res)
            that.processDoubanDate(res.data, setKey)
          }
        })
      },
    
      processDoubanDate: function (moviesDouban, setKey) {
        var movies = [];
        for (var idx in moviesDouban.subjects) {
          var subject = moviesDouban.subjects[idx]
          var title = subject.title;
          if (title.length >= 6) {
            title = title.substring(0, 6) + "...";
          }
          var temp = {
            title: title,
            average: subject.rating.average,
            coverageUrl: subject.images.large,
            movieId: subject.id
          }
          movies.push(temp)
        }
        var readyData = {};
        readyData[setKey] = {
          movies: movies
        }
        this.setData(readyData);
          
      }
    })
    

    movies.wxml

    <import src="movie-list/movie-list-template.wxml" />
    
    <view class="container">
      <view class="movies-template">
        <template is="movielistTemplate" data="{{...inTheaters}}" />
      </view>
      <view class="movies-template">
        <template is="movielistTemplate" data="{{...comingSoon}}" />
      </view>
      <view class="movies-template">
        <template is="movielistTemplate" data="{{...top250}}" />
      </view>
    </view>
    

    movie-list-template.wxml

    <import src="../movie/movie-template.wxml" />
    <template name="movielistTemplate">
      <view class="movie-lsit-container">
        <view class="inner-container">
          <view class="movie-head">
            <text class="slogan">正在热映</text>
            <view class="more">
              <text class="more-text">更多</text>
              <image class="more-img" src="/images/icon/arrow-right.png"></image>
            </view>
          </view>
    
          <view class="movies-container">
            <block wx:for="{{movies}}" wx:for-item="movie">
            <template is="movieTemplate" data="{{...movie}}" />
            </block>
          </view>
        </view>
      </view>
    
    </template>
    

    movie-template.wxml

    <import src="../stars/stars-template.wxml" />
    <template name="movieTemplate">
        <view class="movie-container">
          <image class="movie-img" src='{{coverageUrl}}'></image>
          <text class="movie-title">{{title}}</text>
          <template is="starsTemplate" data="{{average}}" />
        </view>
      </template>
    

    预览

    22.星星评分组件的实现

    utils/util.js

    function convertToStarArray(stars) {
      var num = stars.toString().substring(0, 1)
      var array = []
      for (var i = 1; i <= 5; i++) {
        if (i <= num) {
          array.push(1)
        } 
        else {
          array.push(0)
        }
      }
      return array;
    }
    
    module.exports = {
      convertToStarArray: convertToStarArray,
    };
    

    movies.js

    var util = require('../../utils/util.js')
    
    var temp = {
            stars: util.convertToStarArray(subject.rating.stars),
            title: title,
            average: subject.rating.average,
            coverageUrl: subject.images.large,
            movieId: subject.id,
          }
    

    movie.wxml

    <import src="../stars/stars-template.wxml" />
    <template name="movieTemplate">
        <view class="movie-container">
          <image class="movie-img" src='{{coverageUrl}}'></image>
          <text class="movie-title">{{title}}</text>
          <template is="starsTemplate" data="{{stars:stars,score:average}}" />
        </view>
      </template>
    

    stars-template.wxml

    <template name="starsTemplate">
      <view class="stars-container">
        <view class='stars'>
          <block wx:for="{{stars}}" wx:for-item="i">
            <image wx:if="{{i}}" src='/images/icon/star.png'></image>
            <image wx:else src='/images/icon/none-star.png'></image>
          </block>
        </view>
        <text class="star-score ">{{average}}</text>
      </view>
    </template>
    

    23.更换电影分类标题

    movies.js

    this.getMovieList(inTheatersUrl, "inTheaters", "正在热映")
    this.getMovieList(comingSoonUrl, "comingSoon", "即将上映");
    this.getMovieList(top250Url, "top250", "豆瓣Top250");
    
     getMovieList(url, setKey, categoryTitle) {
        .
    	.
    	.
          success: function (res) {
            console.log(res)
            that.processDoubanDate(res.data, setKey,categoryTitle)
          }
        })
      },
    
    processDoubanDate: function (moviesDouban, setKey,categoryTitle) {
        .
    	.
    	.
    	
        readyData[setKey] = {
          movies: movies,
          categoryTitle: categoryTitle
        }
        this.setData(readyData);
          
      }
    
    

    movie-list-template.wxml

    <text class="slogan">{{categoryTitle}}</text>
    

  • 相关阅读:
    第一节 麒麟系统安装+基础环境搭建(JDK+Scala)
    launchMode之的几种取值
    [JAVA &#183; 0基础]:16.经常使用类
    hdu 2767 Proving Equivalences 强连通缩点
    一个最简单的示例与简单性能分析
    Opencl API解释(一)
    OpenCL 第10课:kernel,work_item和workgroup
    GPU 的硬件基本概念,Cuda和Opencl名词关系对应
    Ubuntu12.04-64bits搭建FFmpeg环境
    ubuntu64bits环境下搭建Opencl的环境
  • 原文地址:https://www.cnblogs.com/derek1184405959/p/9497873.html
Copyright © 2011-2022 走看看