案例

展示电影详情,传递电影的id.从search.vue传递到movie.vue

methods: {
	showMovie(e){
		var trailerid = e.currentTarget.dataset.trailerid;
		// console.log(trailerid);
		uni.navigateTo({
			url: '../movie/movie?trailerId=' trailerid,
			success: res => {},
			fail: () => {},
			complete: () => {}
		});
	}
}

search.vue全部文件

<template>
	<view class="page">
		<view class="search-block">
			<view class="search-ico-wrapper">
				<image src="../../static/icos/search.png" class="search-ico"></image>
			</view>
			<input type="text" value="" placeholder="请输入电影名称" maxlength="10" class="search-text" confirm-type="search" @confirm="searchMe" />
		</view>
		<view class="movie-list page-block">
			<view v-for="movie in resultList" :key="movie.id" class="movie-wrapper">
				<image 
					:src="movie.cover" 
					:data-trailerId="movie.id" 
					@click="showMovie"
					class="poster"></image>
			</view>
			<!-- <view class="movie-wrapper">
				<image src="../../static/poster/civilwar.jpg" class="poster"></image>
			</view> -->
		</view>
		<view class="bottom-tip" v-if="show">
			亲,已经到底了!
		</view>
	</view>
</template>

<script>
	import {DataMixin} from "../../common/DataMixin.js"
	export default {
		mixins:[DataMixin],
		data() {
			return {
				keyWords: '',
				show: false,
				resultList: []
			}
		},
		onLoad() {
			this.resultList = this.list;
		},
		onPullDownRefresh(e) {
			uni.showLoading({
				mask: true
			});
			uni.showNavigationBarLoading();
			this.resultList = this.list;
			this.show = false;
			this.queryByKeyWords();
			uni.stopPullDownRefresh();
			uni.hideLoading();
			uni.hideNavigationBarLoading();
		},
		onReachBottom() {
			uni.showLoading({
				mask: true
			});
			uni.showNavigationBarLoading();
			this.resultList = [...this.list, ...this.appendList];
			this.show = true;
			uni.stopPullDownRefresh();
			uni.hideLoading();
			uni.hideNavigationBarLoading();
		},
		methods: {
			showMovie(e){
				var trailerid = e.currentTarget.dataset.trailerid;
				uni.navigateTo({
					url: `../movie/movie?trailerId=${trailerid}`,
					success: res => {},
					fail: () => {},
					complete: () => {}
				});
			},
			queryByKeyWords(){
				var tempList = [...this.list, ...this.appendList];
				this.resultList = [];
				if (this.keyWords) {
					tempList.forEach(movie => {
						if (movie.name.indexOf(this.keyWords) != -1) {
							this.resultList.push(movie)
						}
					})
				} else {
					this.resultList = this.list;
				}
			},
			searchMe(e) {
				this.show = false;
				var value = e.detail.value;
				this.keyWords = value;
				this.queryByKeyWords();
			}
		}
	}
</script>

<style>
	@import url("search.css");
</style>

movie接收参数

<template>
	<view class="page">
		<!-- 视频播放start -->
		<view class="player"><video :src="movieSingle.trailer" :poster="movieSingle.poster" class="movie" controls></video></view>
		<!-- 视频播放end -->
		<!-- 影片基本信息start -->
		<view class="movie-info">
			<image :src="movieSingle.cover" class="cover"></image>
			<view class="movie-desc">
				<view class="title">{{ movieSingle.name }}</view>
				<view class="basic-info">{{ movieSingle.basicInfo }}</view>
				<view class="basic-info">{{ movieSingle.originalName }}</view>
				<view class="basic-info">{{ movieSingle.totalTime }}</view>
				<view class="basic-info">{{ movieSingle.releaseDate }}</view>
				<view class="score-block">
					<view class="big-score">
						<view class="score-words">综合评分:</view>
						<view class="movie-score">{{ movieSingle.score }}</view>
					</view>
					<view class="score-stars">
						<block v-if="movieSingle.score >= 0"><trailer-stars :innerScore="movieSingle.score" showNum="0"></trailer-stars></block>
						<view class="prise-counts">{{ movieSingle.priseCounts }}点赞</view>
					</view>
				</view>
			</view>
		</view>

		<!-- 影片基本信息end -->
	</view>
</template>

<script>
import trailerStars from '../../components/trailerStars/trailerStars.vue';
import { DataMixin } from '../../common/DataMixin.js';
export default {
	name: '',
	mixins: [DataMixin],
	components: {
		trailerStars
	},
	data() {
		return {
			movieSingle: {},
			trailerId: ''
		};
	},
	onLoad(params) {
		this.trailerId = params.trailerId;
		var tempList = [...this.list, ...this.appendList];
		tempList.forEach(movie => {
			if (movie.id == this.trailerId) {
				this.movieSingle = movie;
			}
		});
	},
	methods: {}
};
</script>

<style>
@import url('movie.css');
</style>

详解

1.因为引入了组件trailerStars,此组件依赖onLoad接收的trailerId,然后去查询获取movie的详情.
2.此时trailerStars组件已经加载完毕,但是movie详情还没获取,就会产生movie.score为undefined的情况,此时需要处理

处理

首先只有movieSingle.socre >= 0时才加载组件

<block v-if="movieSingle.socre >= 0"><trailer-stars :innerScore="movieSingle.socre" showNum="0"></trailer-stars></block>

同时,trailerStars加载的时候需要放在mounted中加载

<template>
	<view class="movie-score-wrapper">
		<image v-for="yellow in yelloScore" src="../../static/icos/star-yellow.png" class="star-ico"></image>
		<image v-for="gray in grayScore" src="../../static/icos/star-gray.png" class="star-ico"></image>
		<view class="movie-score" v-if="showNum==1">{{innerScore}}</view>
	</view>
	</view>
</template>

<script>
	export default {
		name: "trailerStars",
		props: {
			innerScore: 0, //外部传入的分数
			showNum: 0, //是否显示,1显示,0不显示
		},
		data() {
			return {
				yelloScore: 0,
				grayScore: 0,
			}
		},
		mounted() {
			console.log("this.innerScore="   this.innerScore)
			var tempScore = 0;
			if (this.innerScore != null && this.innerScore != undefined && this.innerScore != '') {
				tempScore = this.innerScore;
			}
			
			var yelloScore = parseInt(tempScore / 2);
			var grayScore = 5 - yelloScore;
			
			this.yelloScore = yelloScore;
			this.grayScore = grayScore;
		}
	}
</script>

<style>
	.movie-score-wrapper {
		display: flex;
		flex-direction: row;
	}

	.star-ico {
		width: 20rpx;
		height: 20rpx;
		margin-top: 6rpx;
	}

	.movie-score {
		font-size: 12px;
		color: #808080;
		margin-left: 8rpx;
	}
</style>

 到此这篇关于详解uniapp页面跳转URL传参大坑的文章就介绍到这了,更多相关uniapp URL传参内容请搜索Devmax以前的文章或继续浏览下面的相关文章希望大家以后多多支持Devmax!

详解uniapp页面跳转URL传参大坑的更多相关文章

  1. HTML5 播放 RTSP 视频的实例代码

    目前大多数网络摄像头都是通过 RTSP 协议传输视频流的,但是 HTML 并不标准支持 RTSP 流。本文重点给大家介绍HTML5 播放 RTSP 视频的实例代码,需要的朋友参考下吧

  2. 浅析HTML5中的download属性使用

    这篇文章主要介绍了浅析HTML5中的download属性使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  3. HTML5 Blob 实现文件下载功能的示例代码

    这篇文章主要介绍了HTML5 Blob 实现文件下载功能的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  4. web字体加载方案优化小结

    这篇文章主要介绍了web字体加载方案优化小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  5. ios – 在WKWebView中获取链接URL

    我想在WKWebView中获取tapped链接的url.链接采用自定义格式,可触发应用中的某些操作.例如HTTP://我的网站/帮助#深层链接对讲.我这样使用KVO:这在第一次点击链接时效果很好.但是,如果我连续两次点击相同的链接,它将不报告链接点击.是否有解决方法来解决这个问题,以便我可以检测每个点击并获取链接?任何关于这个的指针都会很棒!解决方法像这样更改addobserver在observeValue函数中,您可以获得两个值

  6. ios – 加载空白页面的SFSafariViewController

    我正在使用SFSafariViewController在我的iOS应用程序中打开一个URL..它在iOS9上完美运行但在将我的设备更新到iOS10后,它只是在地址栏中加载了一个没有URL的空白页面.甚至safariViewController(控制器:SFSafariViewController,didCompleteInitialLoaddidLoadSuccessfully:Bool)在控制器

  7. ios – 应用更新,NSURL和文档目录

    我应该存储相对图像网址或字符串来表示这些资源的位置,还是应该可以存储最终成为绝对网址的内容?

  8. ios – 从Facebook这样的任何URL获取特定图像

    我的问题看起来可能与其他问题类似,但事实并非如此.(据我所知).我无法理解如何从任何URL获取特定图像像Facebook一样,我无法向您显示屏幕截图,因为我没有真正的设备.但我可以告诉你Skype的屏幕截图来自MAC.任何帮助将不胜感激.thanks.编辑:我使用这个link获得了favicon,但它非常小我想要更大的尺寸.解决方法最后,我得到了答案.这可能对你有帮助,这就是为什么我发布这个答案.

  9. ios – 资产目录与文件夹参考:何时使用其中一个?

    我可以将文件放入Assets.xcassets,或者我可以将文件放入文件夹引用.我何时会选择一个而不是另一个?

  10. ios – 在Swift中使用URLComponents编码”

    附:我知道,如果我自己构造一个查询字符串,然后简单地将结果传递给NSURL的构造函数init?

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部