vue几种简单的传值方式

组件传值的方法:

一、父组件向子组件传递数据(props)

第1:父组件需引入子组件

import nav2Children from ‘./nav2Children.vue‘

import zjOne from ‘./public/zjOne.vue‘

组件引入:components: {‘nav2C‘: nav2Children, ‘zjOne‘: zjOne}

变量定义:content:{}, title:"",

html部分写法:

第2:子组件用props接收数据(接收时需注意变量的类型要一一对应)

props: {‘data‘: Object, title: String},

console.log(data)/console.log(title)

二、子组件向父组件传递数据(子组件主要通过事件传递数据给父组件)

子组件部分:

<button @click="goback">子组To父组</button>

首先声明一个了方法 goback,用click事件来调用 goback

goback: function () {

this.$emit(‘transferTitle ‘, this.title)

}

在 goback中,使用了 $emit 来遍历 transferTitle 事件,并返回 this.title

其中 transferTitle是一个自定义的事件,功能类似于一个中转,this.title 将通过这个事件传递给父组件

子组件部分:

这里还可以简写成:@transferTitle=“activated”

在父组件中,声明了一个方法 activated,用 transferTitle 事件调用 activated 方法,获取到从子组件传递过来的参数 title

//接收子组件传来的值

activated: function (data) {

console.log(data);

this.name = data;

},

三、vue 路由传参 params 与 query 两种方式的区别

页面传值:router-link跳转,通过query或params

注意:以上两种写法的区别在于第一种可以用query、params,第二种只能用query,这是因为,params只能用name来引入路由,比如以下方法也可以:

this.$router.push({

name:"nav1Children",

params:{userId:‘formV‘,code:10011}

});

页面接收值:

(1)this.$router.currentRoute.query.userId;

(2)this.$route.query.userId;

(3)this.$route.params.userId;

此处需注意:this.$router.currentRoute 等价于 this.$route

显示区别:

query:

params:

query更加类似于我们ajax中get传参,params则类似于post,说的再简单一点,前者在浏览器地址栏中显示参数,后者则不显示

四、跨页面传值也用query或者localStorage,query方法同上

localStorage是window上的。所以不需要写this.localStorage,你这里的this,是指vue实例。

方案一、

存储:localStorage.data = JSON.stringify(data.body.data);

获取:JSON.parse(localStorage.data);

方案二、

存储:localStorage.setItem(‘data‘,JSON.stringify(data.body.data));

获取:JSON.parse(localStorage.getItem(‘data‘));

五、组件与组件之间的传值还有一种方法event bus

这里来看一个简单的例子:

比如,我们这里有三个组件,main.vue、click.vue、show.vue。click和show是父组件main下的兄弟组件,而且click是通过v-for在父组件中遍历在了多个列表项中。这里要实现,click组件中触发点击事件后,由show组件将点击的是哪个dom元素console出来。

首先,我们给click组件添加点击事件

<div class="click" @click.stop.prevent="doClick($event)"></div>

首先创建出我们的eventBus,我们把它命名为bus.js

import Vue from ‘vue‘;

export default new Vue();

这样我们就创建了一个新的vue实例。接下来我们在click组件和show组件中import它。

import Bus from ‘common/js/bus.js‘;

接下来,我们在doClick方法中,来触发一个事件:

doClick(event) {

Bus.$emit(‘getTarget‘, event.target);

}

这里我们在click组件中每次点击,都会在bus中触发这个名为‘getTarget‘的事件,并将点击事件的event.target顺着事件传递出去。

接着,我们要在show组件中的created()钩子中调用bus监听这个事件,并接收参数:

Bus.$on(‘getTarget‘, target => {

console.log(target);

});

这样,在每次click组件的点击事件中,就会把event.target传递到show中,并console出来。

所以eventBus的使用还是非常便捷的,但是如果是中大型项目,通信比较复杂,还是建议大家直接使用vuex。

六、子组件向子组件传递数据

Vue 没有直接子对子传参的方法,建议将需要传递数据的子组件,都合并为一个组件。如果一定需要子对子传参,可以先从传到父组件,再传到子组件。

原文地址:https://www.cnblogs.com/wangtong111/p/11259546.html

时间: 2024-10-26 12:52:09

vue几种简单的传值方式的相关文章

HTML5的两种简单的存储方式

1.Application Cache HTML5引入应用缓存,意味着web应用可以进行缓存,即使在没有网络的情况下也能使用. application cache有三个特点 离线浏览 已缓存的资源加载速度更快 减少服务器负载,浏览器将只从服务器下载更新过或更改过的资源 使用方法就是在 html标签中添加一个manifest属性 每个指定了 manifest 的页面在用户对其访问时都会被缓存.如果未指定 manifest 属性,则页面不会被缓存(除非在 manifest 文件中直接指定了该页面).

SQL两种简单分页查询方式

以前我们或许都用过了linq的skip and take方式进行分页查询,但是很少自己写sql的分页查询,因为大多数时候,我们都是在调用别人的方法. 最近看到一个文档,感觉方法里面实现的分页查询进入数据库调用的时候,实际最底层调用的还是SQL的分页查询,例如,我们用linq写个分页查询,转成sql表达式后发现: 实际调用的时候,才发现SQL底层是这样进行分页的. 下面,本文主要是介绍两种SQL的分页查询. 一,TOP方式 ----第一种分页查询方式:TOP方式 declare @page int

几种简单的垂直居中方式

1. flex中的align-item .box1{ display: flex; justify-content:center; align-items:Center; } 2. tabel + tabel-cell .box{ display:tabel; } .sub{ display: table-cell; vertical-align: middle; } 3. transform方式(多用于列表图片不规整的居中显示) .box{ height: 2rem; overflow: hi

栅格布局的两种简单的实现方式

使用float: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <style> section { border: solid 1px; } section section { float: left

浅谈Asp.Net中的几种传值方式

一.使用Querystring Querystring是一种非常简单的传值方式,其缺点就是会把要传送的值显示在浏览器的地址栏中,并且在此方法中不能够传递对象.如果你想传递一个安全性不是那么太重要或者是一个简单的数值时,用此方法最好不过了.下面通过一个小例子来完成传值工作,步骤如下: 1.创建一个web form 2.在新建的web form中放置一个button1,在放置两个TextBox1,TextBox2 3.为button按钮创建click事件 代码如下: private void But

ASP.NET三种传值方式

ASP.NET为我们提供了三种方式,一种是可以通过用QueryString来传送相应的值,再一种是通过session变量来传送相应的值,还有就是 通过Server.Transfer方法来实现.下面分别一一介绍: 一.使用Querystring Querystring是一种非常简单的传值方式,其缺点就是:安全性低.会把要传送的值显示在浏览器的地址栏中(也就是不需要保密得参数),并且在此方法中不能够传递对象,参数的长度不能大于 1024字节(?),当参数中有中文得时候,通常需要使用HttpUliti

asp,net 传值方式 优缺点比较

.net C#中页面之间传值传参的六种方法 1.QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中.如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法.但是对于传递数组或对象的话,就不能用这个方法了.下面是一个例子: private void Button1_Click(object sender, System.EventArgs e) { string s_url; s_url = "b.aspx?name=" + Labe

asp.net的页面传值方式

页面传值是学习asp.net初期都会面临的一个问题,总的来说有页面传值.存储对象传值.ajax.类.model.表单等.但是一般来说,常用的较简单有QueryString,Session,Cookies,Application,Server.Transfer. 一.QueryString QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中.如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法.但是对于传递数组或对象的话,就不能用这个方法了.

ios常见的页面传值方式

iOS页面间的传值细分有很多种,基本的传值方式有三种:委托Delegate传值.通知NSNotification传值.Block传值,其他在项目中可能会遇到的还有:UserDefault或文件方式传值.单例模式传值.通过设置属性传值,再有其他的传值方式没有遇到使用过在此不做说明.场景适合,自己使用舒服就是好的方式. 在iOS开发的过程中,常见的页面跳转传值方式大致可以分为两种,现归纳总结一下: 第一种:OneViewController页面跳转到TwoViewController页面(即顺传)