微信小程序-电影详情页

电影详情页

发送请求

上来先把movie.json中的导航标题改了

{
  "navigationBarTitleText": "电影详情页"
}

搭建静态页面
movie.wxml

<!--pages/movie/movie.wxml-->
<view class='moviesContainer'>
<image class='moviesImg' src='/images/index/cart.jpg'></image>
  <view class='movie_detail'>
    <text  class='movie_name'>无限战争</text>
    <text space='nbsp' class='movie_year'>年份:   2018</text>
    <text space='nbsp' class='movie_director'>导演:  安东尼·罗素    乔·罗素</text>
  </view>
  <text class='movie_rating'>10.6</text>

</view>

movie.wxss

/* pages/movie/movie.wxss */
.moviesContainer{
  display: flex;
  padding: 20rpx;
  border-bottom: 2rpx solid #eee;
}
.moviesImg{
  width: 128rpx;
  height: 128rpx;
}
.movie_detail{
  display: flex;
  flex-direction: column;
  width: 70%;
  margin-left: 30rpx;
}
.movie_director{
  font-size: 30rpx;
  color: #333;
}
.movie_name{
  font-size: 32rpx;
  color: #000;
   /* 名字不换行 */
  white-space: nowrap;
  /* 名字超出部分隐藏掉 */
  overflow: hidden;
  /* 隐藏了的部分用...代替 */
  text-overflow: ellipsis;
}
.movie_year{
  font-size: 28rpx;
  color: #666;
}
.movie_rating{
  font-size: 40rpx;
  color: red;
  font-weight: bold;
}

movie.js

// pages/movie/movie.js
//这个是豆瓣开放的接口
const MOVIE_URL = 'http://t.yushu.im/v2/movie/top250?start=25&count=25';
Page({

  /**
   * 页面的初始数据
   */
  data: {
    moviesArray:[]
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    //调用wx.request发送请求
    wx.request({
      url: MOVIE_URL,
      success:(data)=>{
        console.log(data);
        //更新状态值
        this.setData({
          moviesArray: data.data.subjects
        })
      }
    })
  },

这里如果出现403错误的可能是豆瓣禁止小程序请求了,将链接中的http://api.douban.com换为http://t.yushu.im就可以了

还有一个错误就是http://t.yushu.im 不在以下 request 合法域名列表中
这里写图片描述

解决办法是
这里写图片描述

最后回到页面处理数据,遍历数据时记得在外面多套一层view
movie.wxml

<!--pages/movie/movie.wxml-->
<!-- 在外面多套一个view用来遍历 -->
<view wx:for='{{moviesArray}}' wx:key='{{index}}'>
  <!-- 遍历出来的是item -->
  <view class='moviesContainer'>
    <image class='moviesImg' src='{{item.images.large}}'></image>
    <view class='movie_detail'>
      <text class='movie_name'>{{item.title}}</text>
      <text space='nbsp' class='movie_year'>年份:   {{item.year}}</text>
      <text space='nbsp' class='movie_director'>导演:  {{item.directors[0].name}}</text>
    </view>
    <text class='movie_rating'>{{item.rating.average}}</text>
  </view>


</view>

刷新页面如下
这里写图片描述

备注:

  • 小程序出于安全考虑所有的协议都是https协议,且如果没有在开发设置中配置请求的连接是无法访问指定的链接的
  • 一个微信小程序的并发网络请求数量被限制在最多5个

电影详情页

新建movieDetail目录,里面新建movieDetail页面
现在想要实现点击电影(movie)跳转到电影详情页(movieDetail)
以前是绑定一个点击事件,然后在js中用wx.navigateTo跳转,现在用另一种方式

  • navigator:页面链接。

movie.wxml中改一下,把最外面的view换成navigator,然后在后面加上url属性,里面填你要跳转到的页面的地址

<!--pages/movie/movie.wxml-->
<!-- url 中可以携带你想传递的数据,比如我们把index传递到movieDetail页面 -->
<navigator url='/pages/movieDetail/movieDetail?index={{index}}' wx:for='{{moviesArray}}' wx:key='{{index}}'>
  <!-- 遍历出来的是item -->
  <view class='moviesContainer'>
    <image class='moviesImg' src='{{item.images.large}}'></image>
    <view class='movie_detail'>
      <text class='movie_name'>{{item.title}}</text>
      <text space='nbsp' class='movie_year'>年份:   {{item.year}}</text>
      <text space='nbsp' class='movie_director'>导演:  {{item.directors[0].name}}</text>
    </view>
    <text class='movie_rating'>{{item.rating.average}}</text>
  </view>
</navigator>

这样跳转就实现了

为了不用再发请求,我们把电影数据存到AppmoviesArr

App({
  data:{
    //是否在播放
    isPlay:false,
    //哪一个页面在播放
    pageIndex:false,
    //要跳转的item
    moviesArr:[]
  }
});

movie.js中添加存数据的代码
这里写图片描述

然后在movieDetail.wxml中拿到数据

// pages/movieDetail/movieDetail.js
let appdata = getApp();
Page({

  /**
   * 页面的初始数据
   */
  data: {
    movie:{}
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.setData({
      movie: appdata.data.moviesArr[options.index]
    })
  },

显示页面movieDetail.wxml

<!--pages/movieDetail/movieDetail.wxml-->
<view class='movieDetailContainer'>
  <image class='movie_img' src='{{movie.images.large}}'></image>
  <text class='movie_name'>{{movie.title}}</text>
  <view class='movie_detail'>
    <text>评分:{{movie.rating.average}}</text>
    <text>导演:{{movie.directors[0].name}}</text>
    <text class='movie_zhuyan'>主演:<text wx:for='{{movie.casts}}' wx:key='index' space='nbsp'>{{item.name}}  </text></text>
  </view>
  <button>我要观影</button>
</view>

样式movieDetail.wxss

/* pages/movieDetail/movieDetail.wxss */
.movieDetailContainer{
  display: flex;
  flex-direction: column;
  align-items: center;
}
.movie_img{
  width: 70%;
  height: 700rpx;
  margin: 20rpx 0;
}

.movie_name{
  font-size: 40rpx;
  font-weight: bold;
}

.movie_detail{
  width: 60%;
  display:flex;
  flex-direction: column;
  font-size: 28rpx;

}
.movie_detail text{
  margin: 5rpx 0;
}
.movie_zhuyan{
  /* 名字不换行 */
  white-space: nowrap;
  /* 名字超出部分隐藏掉 */
  overflow: hidden;
  /* 隐藏了的部分用...代替 */
  text-overflow: ellipsis;
}
button{
  width:70%;
  height: 80rpx;
  background: green;
  color: #fff;
  line-height: 80rpx;
  margin-top: 50rpx;
}

效果图:
这里写图片描述

  • 5
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
猫眼电影小程序的制作需要掌握以下技术: 1. 微信开发者工具:用于开发和调试小程序。 2. 小程序框架:小程序基于原生框架开发,包含了 WXML、WXSS 和 JS 三个部分,分别对应着 HTML、CSS 和 JavaScript。 3. 猫眼电影 API:猫眼电影提供了开放的 API 接口,可以获取电影列表、影院信息、电影详情等数据。 下面是一个简单的猫眼电影小程序代码示例: 1. 在微信开发者工具中创建小程序项目。 2. 在 app.json 文件中配置页面路由: ``` { "pages": [ "pages/index/index", "pages/movie/movie", "pages/cinema/cinema", "pages/detail/detail" ], "window": { "backgroundTextStyle": "light", "navigationBarBackgroundColor": "#fff", "navigationBarTitleText": "猫眼电影", "navigationBarTextStyle": "black" } } ``` 3. 在 pages/index/index.wxml 文件中添加电影列表: ``` <view class="movie-list"> <view wx:for="{{movies}}" wx:key="{{index}}" class="movie-item" bindtap="onMovieTap"> <image src="{{item.img}}" class="movie-img"></image> <view class="movie-info"> <view class="movie-title">{{item.nm}}</view> <view class="movie-score">{{item.sc}}</view> </view> </view> </view> ``` 4. 在 pages/index/index.js 文件中请求猫眼电影 API 并渲染电影列表: ``` Page({ data: { movies: [] }, onLoad: function () { wx.request({ url: 'https://m.maoyan.com/ajax/movieOnInfoList', success: res => { this.setData({ movies: res.data.movieList }) } }) }, onMovieTap: function (e) { wx.navigateTo({ url: '/pages/detail/detail?id=' + e.currentTarget.dataset.id }) } }) ``` 5. 在 pages/detail/detail.wxml 文件中添加电影详情: ``` <view class="detail"> <image src="{{movie.img}}" class="detail-img"></image> <view class="detail-info"> <view class="detail-title">{{movie.nm}}</view> <view class="detail-score">评分:{{movie.sc}}</view> <view class="detail-desc">{{movie.desc}}</view> </view> </view> ``` 6. 在 pages/detail/detail.js 文件中根据电影 ID 请求电影详情: ``` Page({ data: { movie: {} }, onLoad: function (options) { wx.request({ url: 'https://m.maoyan.com/ajax/detailmovie', data: { movieId: options.id }, success: res => { this.setData({ movie: res.data.detailMovie }) } }) } }) ``` 这是一个简单的猫眼电影小程序示例,你可以根据自己的需求进行扩展和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值