iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >详解uniapp页面跳转URL传参大坑
  • 477
分享到

详解uniapp页面跳转URL传参大坑

2024-04-02 19:04:59 477人浏览 安东尼
摘要

案例 展示电影详情,传递电影的id.从search.Vue传递到movie.vue methods: { showMovie(e){ var trailerid = e.cur

案例

展示电影详情,传递电影的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传参内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 详解uniapp页面跳转URL传参大坑

本文链接: https://www.lsjlt.com/news/142131.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 详解uniapp页面跳转URL传参大坑
    案例 展示电影详情,传递电影的id.从search.vue传递到movie.vue methods: { showMovie(e){ var trailerid = e.cur...
    99+
    2024-04-02
  • uniapp跳转页面传大量参数
    随着移动互联网的发展,各种场景下的小程序和H5应用也逐渐涌现,而uniapp作为一种能够同时适配多种平台的开发框架,在跨端开发中具有很大优势。然而,uniapp在跳转页面时,如果需要传递大量参数,则有可能会遇到一些问题。下面将从实际需求出发...
    99+
    2023-05-22
  • nodejs页面跳转传参
    Node.js是一个轻量级的JavaScript运行环境,可以让JavaScript解释器在服务器上运行代码。因此,Node.js成为了一种流行的服务器端开发语言,常用于构建Web应用程序。在Node.js中,使用Express框架可以轻松...
    99+
    2023-05-18
  • html页面跳转传递参数
    HTML页面跳转传递参数是Web开发中常用的技术,通过传递参数可以实现页面之间的数据交互和信息传递,为用户提供更加个性化的服务。本文将介绍如何实现HTML页面跳转传递参数的几种方法。一、URL参数传递URL参数传递是最常用的HTML页面跳转...
    99+
    2023-05-14
  • 详细介绍UniApp页面跳转传值的方法
    近年来,随着移动互联网技术的发展和移动设备的普及,开发APP已经成为了一种时髦和高效的方式来扩展业务。而UniApp作为一款跨平台开发工具,在应用开发过程中具有很强的便捷性和高效性。然而,对于在开发UniApp应用中涉及到的页面跳转和参数传...
    99+
    2023-05-14
  • uniapp页面带参数跳转不刷新怎么解决
    在使用uniapp开发项目时,我们经常会遇到需要传递参数并跳转下一个页面的场景。然而,在遇到需要刷新页面的情况时,一些开发者却发现页面并没有按照预期的进行刷新。这个问题出现的原因在于uniapp的页面跳转机制,以及页面的组件更新机制。针对这...
    99+
    2023-05-14
  • vue页面跳转传参的问题怎么解决
    在Vue中,可以通过路由传参来解决页面跳转传参的问题。1. 使用路由参数传参:可以通过在路由路径中定义参数来传递数据。在定义路由时,...
    99+
    2023-08-08
    vue
  • 浅谈uniapp页面跳转的解决方案
    目录1.uniapp常用跳转API2.微信小程序页面跳转API3.其他页面跳转回tabbar页面的方法4.页面来回跳转保持数据的方法正常的页面跳转的api大家应该都清楚,但是涉及到多...
    99+
    2024-04-02
  • JavaScript怎么实现网页传参跳转页面功能
    随着互联网的快速发展,越来越多的网页需要将信息从一个页面传递到另一个页面。传统的方法是使用GET或POST请求,但这种方式需要服务器端的支持,并且不能直接跳转页面。而JavaScript实现网页传参跳转页面,无需服务器支持,可以直接跳转到目...
    99+
    2023-05-14
  • Vue路由跳转传参或者打开新页面跳转问题
    目录Vue路由跳转传参或打开新页面跳转1. 通过路由中的name属性 2. 通过路由属性中的path属性 3. $router 和 $route的区别4. 在Vu...
    99+
    2023-03-11
    Vue路由跳转传参 Vue路由跳转 Vue打开新页面跳转
  • Vue路由跳转传参或打开新页面跳转问题怎么解决
    这篇文章主要介绍了Vue路由跳转传参或打开新页面跳转问题怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue路由跳转传参或打开新页面跳转问题怎么解决文章都会有所收获,下面我们一起来看看吧。Vue路由跳转...
    99+
    2023-07-05
  • vue跳转页面和参数传递怎么实现
    本篇内容介绍了“vue跳转页面和参数传递怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!要实现一个功能:从页面A跳转到页面B,并且页面...
    99+
    2023-06-30
  • uniapp中微信小程序与H5相互跳转以及传参详解(webview)
    目录技术栈:前言:一、小程序向H5传递1.小程序端发送数据2.pages.json进行设置3.H5端进行数据接收4.调试方式以及数据查看二、H5向小程序传递1.引入需要的模块2.更改...
    99+
    2024-04-02
  • Angular中如何实现$state.go页面跳转并传递参数
    这篇文章给大家分享的是有关Angular中如何实现$state.go页面跳转并传递参数的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。路由页面(注意这里要在路由上添加一个参数用于传...
    99+
    2024-04-02
  • PHP页面跳转函数详解:header、location、redirect等函数的页面跳转技巧
    PHP 页面跳转函数详解:header、location、redirect 等函数的页面跳转技巧,需要具体代码示例引言:在开发 Web 网站或应用时,页面之间的跳转是一个必不可少的功能。PHP 提供了多种方式来实现页面跳转,其中包括 hea...
    99+
    2023-11-18
    函数 PHP 页面跳转
  • 使用PHP进行页面跳转时如何传递POST参数
    标题:PHP页面跳转中传递POST参数的实现方法 在网站开发中,经常会遇到页面跳转并需要传递POST参数的情况,这时候如何使用PHP实现对POST参数的传递就显得十分重要。本文将介绍如...
    99+
    2024-04-02
  • 微信小程序中怎么实现页面间跳转传参
    微信小程序中怎么实现页面间跳转传参,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。缓存虽然URL传参比较简单易用,但也有局限性,...
    99+
    2024-04-02
  • vue跳转页面并且实现参数传递接受示例
    目录vue跳转页面及参数的传递接受一、页面跳转、传递参数二、接收参数vue跳转页面及参数的传递接受 要实现一个功能:从页面A跳转到页面B,并且页面A的参数要传递到页面B,B使用传过来...
    99+
    2024-04-02
  • vue3路由配置以及路由跳转传参详解
    目录1、安装路由2、编写需要展示的路由3、配置路由3、使用路由4、編程式路由5、路由传参5、1query参数传递5、2传递params参数 6、子路由配置总结1、安装路由 ...
    99+
    2023-05-16
    vue3 路由跳转 vue3路由配置 vue跳转传参数
  • 详解 Golang 中的页面跳转操作步骤
    Golang 是一种由谷歌开发的开源编程语言,广泛应用于Web开发中。在Web开发过程中,页面跳转是一个非常常见的操作,本文将详细解释在 Golang 中进行页面跳转的步骤,并提供具体...
    99+
    2024-03-05
    编程 golang 页面跳转 操作步骤
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作