自学uni-app (4)页面、事件和组件

Uniapp中的事件处理:uni.emit和uni.on/uni.once 在Uniapp项目中,事件处理是一种重要的通信方式。uni.emit和uni.on(以及uni.once)是Uniapp中用于实现组件间通信的两个关键方法。本文将深入介绍这两个方法,探讨它们的优势、劣势,并通过示例代码演示它们的用法。uni.emit和uni.on提供了一种方便的组件通信方式,使得组件之间的耦合度降低,开发更加灵活。然而,开发者在使用时应注意全局污染和调试困难的问题,合理选择适合项目的通信方式。希望本文对Uniapp中的事件处理有所帮助!如果有任何问题或建议,欢迎留言讨论。🎉。 阅读详情

一、页面

1. 创建新页面

  1. 在pages文件夹下直接创建.vue 的新页面文件
    文件目录如下
┌─components          
│         
├─pages                 页面文件存放的目录
│  ├─index
│  │  └─index.vue       index页面
└─other.vue 		创建的新页面
├─static               
├─main.js              
├─App.vue             
├─manifest.json     
└─pages.json
  1. 把新的页面文件放在pages下的一个文件夹内
    文件目录如下
┌─components          
│         
├─pages                 页面文件存放的目录
│  ├─index
│  │  └─index.vue       index页面
│  └─other
│     └─other.vue 		创建的新页面
├─static               
├─main.js              
├─App.vue             
├─manifest.json     
└─pages.json

2. 显示新页面

如果想要显示新页面,我们需要在pages.json中进行页面的注册
注:

  1. pages是一个数组
  2. pages中第一项表示应用启动页(在没设置页面跳转之前,我们都把新页面放在第一项,这样才能在应用启动时显示新页面)

"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
		{
		    "path" : "pages/other",
		    "style" : {
				"navigationBarTitleText": "新页面"
				
			}
		},
		{
			"path": "pages/index/index",
			"style": {
				"navigationBarTitleText": "uni-app"
			} 
		}
	    
    ]

二、事件

1. 注册事件

在页面文件的中template标签内注册事件 @click="handleClick"

样例:

<template>
	<view class="content">
		<view @click="handleClick"> 点我试试</view>
	</view>
</template>

2. 定义事件监听回调函数

在methods中定义事件监听回调函数
在页面文件的script标签的导出模块的method中加入该事件监听的回调函数handleClick()
样例:

<script>
	export default {
		methods: {
			handleClick(){
				console.log("你好帅(你好美)!!!");
			}
		}
	}
</script>

3. 事件的传参

我们可以通过事件来传递参数

3.1 简单传参

通过给事件函数加入实参
回调函数中通过event对象来调用

样例:

<template>
	<view class="content">
		<view @click="handleClick(1)"> 点我获取要传递的参数</view>
	</view>
</template>
<script>
	export default {
		methods: {
				handleClick(event){
					console.log(event);
			}
		}
	}
</script>

event为注册函数中传递的参数,可以为数字类型、字符串类型甚至是对象类型
我们可以通过event对象来调用它的属性 ,调用方法: event.property ,property为event对象所拥有的其中一个属性
如果有一个属性为transfernum ,可以通过event.transfernum 来调用

注:event可以简写成e效果是一样的
如下

		handleClick(e){
				console.log(e);
		}

3.2 传入标签内自定义参数

<template>
	<view class="content">
		<view data-pro="11" @click="handleClick(1,$event)"> 点击我获取标签中自定义的数据的值</view>
	</view>
</template>
<script>
	export default {
		data() {
			return {
				
			}
		},
		methods: {
			handleClick(index,event){
				console.log(index);
				console.log(event);
				console.log(event.currentTarget.dataset.pro);
		}
	}
	}
</script>

event 返回值是一个对象
如下

event对象
我们通过event.currentTarget.dataset.pro 来获取event对象的currentTarget属性下的pro
pro属于数据集 dataset ,因为我们定义的是data-pro="11" ,data就相当于是一个前缀,pro作为实际放在数据集中的数据名

当然自定义的数据值也可以是子组件的值,或者是从页面用户输入的值,这些在后面学习了组件获取参数,将获取到的参数放到自定义数据中就可以了

三、组件

组件是视图层的基本组成单元。
一个组件包括开始标签和结束标签,标签上可以写属性,并对属性赋值。
内容写在开始标签和结束标签之内。
页面上内容的变化是通过挂载和销毁组件来完成。
注:
根节点为 <template>,这个 <template> 下只能且必须有一个根<view>组件。这是vue单文件组件规范。

1. 组件的共有属性

属性名类型描述注解
idString组件的唯一标识保持整个页面唯一
classString组件的样式类在对应的 css 中定义的样式类
styleString组件的内联样式可以动态设置的内联样式
hiddenBoolean组件是否隐藏所有组件默认是显示的
data-*Any自定义属性组件上触发的事件时,会发送给事件处理函数(*表示自定义的内容)
@*EventHandler组件的事件用于事件绑定(*表示自定义的内容)

2. 添加组件

在component文件夹下创建一个组件文件phoneComp


<template>
	<view>
		<text>这是一个组件</text>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				
			};
		}
	}
</script>

<style>

</style>

3. 导入组件

在index.vue中的script标签中导入创建的组件文件

<script>
	import textCom from "@/components/phoneComp";
	
</script>

4. 注册组件

将导入的组件注册到页面中

<script>
	import phoneCompfrom "@/components/phoneComp";
	export default {
		components:{
			//注册组件   name:value  当name=value时可以简写成  name  , 全写为 phoneComp:phoneComp
			phoneComp
		}
</script>

5. 使用注册的组件

通过标签的形式来使用组件

<template>
	<view>
		<phoneComp></phoneComp> 
	</view>
</template>

注:
vue推荐用phone-comp的格式来表示组件

但是这个必须是在注册组件时将模块名用驼峰命名法来表示,才能使用

如:注册时使用phoneComp 作为注册时的组件名,那么你可以使用<phone-comp></phone-comp>来使用组件

如果不使用驼峰命名法,如:phonecomp作为注册时的组件名,那么你不可以使用<phone-comp></phone-comp>来使用组件

实际是使用-来代替 驼峰

phoneComp→phone-comp

组件的源文件的命名方式不会影响导入模块后的命名

6. 组件传递参数

父向子传递参数通过属性的方式

子向父传递参数通过触发事件的方式

使用全局数据传递参数

  1. 通过挂载vue的原型上
  2. 同通过globalData的方式

6.1 父向子传递数据

父页面向子组件ul-com 通过属性名list 传递了一个数组数据

子组件通过props 进行接收数据

父组件


<transfer-par :list="[1,2,3,4]"></transfer-par>

transfer-par 为导入的组件(模块)的自定义组件名

import transferPar from '@/components/transferPar.vue';

当然我们也可以在父组件上用 导出模块的属性值来代替直接赋值

例如:list="filterList" 这里filterList为在data中定义的一个数组

子组件

<template>
	<view :list="list">
		{{list[2]}}
	</view>
</template>

<script>
	export default {
		data() {
			return {
				
			};
		},props:{
			list:Array
		}
	}
</script>

<style>

</style>

6.2 子向父传递数据

子组件


<template>
	<view >
		<text @click="handleClick"> 点击获取子组件的数据</text>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				sr:"来自子组件的数据"
			};
		},
		methods:{
			handleClick(){
				console.log("点击了子组件");
				this.$emit("textChange",this.sr);
			}
		}
	}
</script>

<style>

</style>

父组件


<template>
	<view>
		<!-- <view >{{sr}} </view> -->
		<child-transfer
			@textChange="handleTextChange">
    	</child-transfer>
    </view>
</template>

<script>
	import childTransfer from '@/components/childTransfer.vue';
	export default {
		data() {
			return {
				sr:""
			}
		},
		methods: {
			handleTextChange(e){
				console.log("点击了");
				// this.sr=e;
			}
		},
		components: {
			childTransfer
		}
	}
</script>

<style>

</style>

uni-app 组件与页面事件传值 this.$emit 阅读详情

相关推荐

uni-app 应用、页面、组件生命周期

函数名说明平台差异说明onInit监听页面初始化,其参数同 onLoad 参数,为上个页面传递的数据,参数类型为 Object(用于页面传参),触发时机早于 onLoad百度小程序 3.1.0+onLoad监听页面加载,其参数为上个页面传递的数据,参数类型为 Object(用于页面传参),参考示例onShow监听页面显示。页面每次出现在屏幕上都触发,包括从下级页面点返回露出当前页面onReady监听页面初次渲染完成。注意如果渲染速度快,会在页面进入动画完成前触发onHide。

qq_36158551的博客 1099

uniapp 学习笔记四 组件使用和参数传递事件触发

uniapp 学习笔记四 组件使用和参数传递事件触发。组件 test-my-comp.vue。

Ggome的博客 1206

STM32 RTC_WaitForSynchro()死循环问题分析与LSI时钟优化实践

本文深入分析了STM32使用LSI时钟源时,调用RTC_WaitForSynchro()函数陷入死循环的根本原因。问题核心在于RTC时钟域未正确使能,导致硬件同步标志RSF无法置位。文章提供了通过显式调用RCC_RTCCLKCmd(ENABLE)函数启用RTC时钟总开关的解决方案,并分享了编写健壮RTC/BKP初始化代码、增加超时机制等最佳实践,确保系统稳定运行。

weixin_29185493的博客 510

Uni-App常用事件

在Uni-App中,有许多常用的事件可以用来处理用户交互、页面生命周期等方面的逻辑。以上是Uni-App中常用的一些事件,开发者可以根据实际需求选择合适的事件来处理用户交互和页面逻辑。用于处理页面的生命周期事件,例如页面加载、显示、隐藏、卸载等,可以在这些事件中执行相应的逻辑。用于处理长按操作,可以绑定在需要长按触发逻辑的元素上,例如长按显示气泡框、长按删除等操作。用于处理手势操作,可以监听触摸开始、移动、结束等事件,实现一些手势相关的逻辑。除了上述内置事件外,Uni-App还支持自定义事件,可以通过。

zzx262625的博客 2228

生产实习-实习报告-Raspberry Pi的应用

生产实习-Raspberry Pi的应用 一.设计任务: 1、搭建树莓派开发环境 主要包括烧录树莓派操作系统,远程访问树莓派,树莓派接口配置以及树莓派与windows实现文件共享等。 2、树莓派的基本操作 控制GPIO点亮LED灯以及树莓派舵机云台控制 3、安装OpenCV及图像采集实验 OpenCV配合树莓派,直接读取来自树莓派摄像头Pi Camera的视频,进行人脸识别、边缘检测、颜色判别等各种计算机视觉开发。 4、树莓派小车远程Wi-Fi控制 使用树莓派驱动L298N,用树莓派板载Wi-Fi控制

青竹小轩的博客 750

飞思卡尔16位单片机(二)——CodeWarrior开发环境搭建及新建、调试工程

一、安装CodeWarrior 飞思卡尔16位单片机的开发环境为CodeWarrior5.1,这个软件安装比较简单,软件的安装文件可以从相应的网站上下载。安装CodeWarrior所需要的电脑的硬件资源也比较宽泛,目前一般的电脑都可以满足这个要求,可以支持win10、win7等操作系统。安装过程按照按照软件的提示一步步操作即可。 二、安装USBDM驱动 USBDM是...

bigmarshal的博客 1万+

UniApp 数据绑定和事件处理

在 UniApp 中,数据绑定是将组件的 UI 与数据状态关联起来的过程。UniApp 使用类似 Vue.js 的数据绑定机制,通过。通过这些步骤,你可以掌握 UniApp 中的数据绑定和事件处理,进而开发出具有动态交互的应用。这个部分涉及到如何在 UniApp 中处理数据和事件,这是构建互动性强的应用的核心部分。UniApp 支持多种事件,如点击、输入、提交等。UniApp 支持表单控件的双向绑定,方便处理用户输入。绑定事件处理函数,例如点击事件、输入事件等。方法触发自定义事件,并在父组件中使用。

疯狂假前端的博客 1444

最新扣子(coze)案例:在coze上用DeepSeek+私有数据库、知识库,创建你的专属智能体

Gartner预测,到2026年,70%的企业将通过Al知识库实现「组织记忆外化」。数字化时代,数据已成为企业发展的核心资产。我们通过人工智能将知识库从“静态存储"升级为“智能服务”。让"沉睡宝藏"焕发新生,助力企业突破数据困局。

weixin_72689845的博客 2163

uni-app 页面生命周期及组件生命周期汇总(Vue2、Vue3)

💎uni-app是一个使用Vue.js开发所有前端应用的框架,开发者编写一套代码,可发布到 iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝)、快应用等多个平台。uni-app在开发者数量、案例、跨端抹平度、扩展灵活性、性能体验、周边生态、学习成本、开发成本等8大关键指标上拥有更强的优势。从下面uni-app功能框架图可看出,uni-app在跨平台的过程中,不牺牲平台特色,可优雅的调用平台专有能力,真正做到海纳百川、各取所长。🎯。

李赛赛的专栏 4788

Unity类银河战士恶魔城学习总结(P103之前 Enemy相关 , 骷髅战士,状态机,敌人状态,)

udemy的Alex银河战士恶魔城,记录我自己的学习,代码会逐渐每一p更新,仅供参考学习。

suzh1qian的博客 1631

这款值68亿的游戏,你不实战一下吗?安排!

本文介绍了如何使用Cocos开发传送带像素消除类游戏。游戏包含像素画、传送带、炮台等核心元素,需要先解析图片生成像素数据,再通过关卡编辑器设计关卡机制。炮台会在传送带上环绕运动,发射子弹消除匹配颜色的像素点。文章详细讲解了游戏对象实现方法,包括像素生成、传送带运动轨迹、炮台瞄准算法等,并展示了实战效果。完整源码已集成到亿元Cocos小游戏实战合集中,适合对像素消除游戏开发感兴趣的开发者参考。

lsw_Cs的博客 438

uni-app 页面封装组件并引用到页面

相信大家在开发的时候都会把项目中模块相似的都会单独做个组件,比如头部搜索、列表。。。等,然后可以随意的在需要的页面中引入。这样不仅简化代码,更方便维护。今天我们看下在uni-app中如何简单的创建组件并引用到页面中。 上篇文章中讲到了目录中各个文件的用途,components这个文件夹就是存放公共组件的地方。我们可以在这里面自行创建文件,接下来我们就拿列表来说下,先看下效果图: 在components文件中创建list文件, 创建list.vue文件后,然后根据需求进行编写布局。我们来看下代码,(样式我

YL 1万+

SEATA安装使用

springcloudalibaba集成seata分布式事务、seata持久化

原名又逢乱世。不要放下学习的脚步,毕竟比天天打牌、钓鱼、打游戏更能从内在充实自己。 2369

uni-app 页面&组件生命周期

不论是app还是小程序,生命周期是非常重要的知识点。 uni-app 支持如下生命周期函数: 页面的生命周期 onLoad 监听页面加载,其参数为上个页面传递的数据,参数类型为object(用于页面传参),参考示例 onShow 监听页面显示 onReady 监听页面初次渲染完成 onHide 监听页面隐藏 onUnload 监听页面卸载 onPullDownRefresh 监听用户下拉动作 onReachBottom 页面上拉触底事件的处理函数 onShareAppMessage 用户点击右上角分享 微信

FantasyWeirdo的博客 2万+

Cesium 实战 19 - 使用 gltf-vscode 查看、预览以及编辑 glTF 和 GLB 模型

Cesium 实战 - 使用 gltf-vscode 查看、预览以及编辑 glTF 和 GLB 模型。

非科班Java出身GISer的博客 6434

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

uni-app组件以及页面通讯方法(五)

uni-app组件以及页面通讯方法

chengcheng9876的博客 3718

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Uni-app的页面路由和导航是基于组件间的通信机制

对于跨页面的数据共享,可以使用uni-app的Service或在项目中创建单独的模块来保存数据,这样可以在不同的页面中访问和更新这些数据。: Uni-app允许开发者创建自定义指令,如v-model,用于双向绑定组件属性,这在组件间传递简单数据时非常方便。: 当需要更复杂的单向数据流管理时,可以使用Vuex状态管理模式,它允许在应用的不同部分存储和共享状态。在Uni-app中,你可以使用事件总线来进行页面间的通信,即使它们没有直接的父子关系。在每个需要使用 Vuex 的组件中,通过 Vue 的。

[Blog][Domain] programb.blog.youkuaiyun.com 1139

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

《uni-app》表单组件-Checkbox组件

本文主要分享了uni-app中内置组件checkbox的一些用法,主要包括属性如value属性,禁用属性,选中属性等,以及checkbox提供的默认事件change的使用,最后示例了一个结合v-for指令,button组件完成了一个动态生成checkbox并获取选中值的示例demo;.........

Oliver尹的博客 2万+

《uni-app》表单组件-Picker组件

picker,选择器组件,该组件为一个复合组件,它内置了 五种选择器,分别为:普通选择器,多列选择器,时间选择器,日期选择器,省市区选择器; 选择器在表单组件中同样属于使用频率非常高的一种,常见的业务场景包括,注册时的地区选择,日期选择,时间选择等等;

Oliver尹的博客 7962

《uni-app》表单组件-Textarea组件

Textarea,多行文本输入框组件,它和Input组件非常相似,从职能上讲两者是具有相似性的,最大的区别可能就在于 Input是单行文本显示,而 textarea是多行文本显示了,最常见的业务场景在类似于产品描述、建议、说明等需大量文字录入的地方;

Oliver尹的博客 1万+

【uni-app】自定义组件和通信_uniapp组件之间如何通信

组件是vue技术中非常重要的部分,组件使得与ui相关的轮子可以方便的制造和共享,进而使得vue使用者的开发效率大幅提升,在项目的component目录下存放组件,uni-app只支持vue单文件组件(.vue 组件)main.js 进行全局引入//引入组件//调用app.component方法全局注册组件return {app通过uni-app的easycom: 将组件引入精简为一步。

2401_84520271的博客 1243

uni-app下使用vant组件

1. 创建uni-app 下载打开HbuilderX,注意这里下载app开发版的。然后创建新项目,创建的时候选择uni-app默认模板 2. 下载vant组件 vant的GitHub下载地址下载完成后解压,然后在项目更目录下创建文件夹wxcomponents,注意这里的wxcomponents目录级别和pages在同一级别,然后再该目录下创建vant目录。回到刚才解压的vant目录,找到dist文件夹,把它复制到vant目录下 3. 引用vant组件 3.1 首先在app.vue文件内添加

wangmj518的专栏 2万+

uni-app的页面组件跳转

前言: 整理一些uni-app的页面跳转相关资料出来。 目录: 官方入口:uni-app官网 具体实现: 跳转1:保留当前页面,跳转到应用内的某个页面,uni.navigateBack 可以返回当前页面 跳转2:关闭当前页面,跳转到应用内的某个页面 跳转3:关闭所有页面,打开到应用内的某个页面。 跳转4:跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面。 跳转5:关闭当前页面,返回上一页面或多级页面。 可通过getCurrentPages()获取当前的页面...

浩星 4375

uni-app页面跳转以及传值

在uni-app中是没有路由这一说法的,想要跳转页面官方给出了以下集中方法: 一、通过配置pages.json里面的tabBar来实现,主要写法请参考官方文档: uni-app官方配置pages.json方法 二、通过官方给的组件navigator来实现跳转(类似a标签),主要样式如下 <navigator url="跳转地址" open-type="跳转方式"></navigator> 注意:在添加url地址时不要加.vue后缀 open-type的值主要有以下几..

m0_55240753的博客 1万+

uniapp中使用uni.$emit和uni.$on进行页面通讯传值

注意事项 1.uni.emit、uni.emit、 uni.emit、uni.on 、 uni.once、uni.once 、uni.once、uni.off 触发的事件都是 App 全局级别的,跨任意组件,页面,nvue,vue 等 2.使用时,注意及时销毁事件监听,比如,页面 onLoad 里边 uni.on注册监听,onUnload里边uni.on 注册监听,onUnload 里边 uni.on注册监听,onUnload里边uni.off 移除,或者一次性的事件,直接使用 uni.$once 监听 A

hu104160112的博客 1万+

uni-app几种常用的页面跳转方式

uni-app常用的几种页面跳转方式

qq_53966033的博客 2万+
上一篇: 自学uni-app (3)uni-app的常用组件
下一篇: 自学uni-app (6)数据缓存
IT_Joliu
博客等级 码龄9年 32粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值