movies.jshtml
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.wxmljson
<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.wxmlapp
<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>
預覽ui
utils/util.jsthis
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.jsurl
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.wxmlcode
<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.wxmlxml
<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>
movies.jshtm
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>