githut地址:https://github.com/liguoyong/vueobj1

一、父子之间主键传值:(主要是在父主件里的子主件传递参数,然后再子主件里用props接收)

例如Father.vue

<template>
<div class="father"> <Son :value="" title="hello" :inputVal="val"
@sendData="testAction">
</Son> <button @click="testAction()">按钮</button> </div>
</template> <script>
import Son from './Son.vue'
export default {
components: {
Son
},
data(){
return {
message: 'hello vue',
val: ''
}
},
methods: {
sendAction(){
this.val = this.$refs.in.value;
}
}
}
</script>

例如son.vue

export default {
//接收组件标签上的属性
//外部属性,只能访问,不能修改
// 单向数据流:保证数据是自顶向下的
// props: ['value', 'title']
props: {
value: Number,
title: String,
inputVal: String
},
//内部属性
data(){
return {
name: this.title
}
},
methods: {
modify(){
this.name = 'world';
},
sendAction(){
let value = this.$refs.in.value; //调用click事件
// 触发组件标签上的自定义事件
// 参数1:事件名字
// 参数2:传递的值sendData
this.$emit('sendData', value, ,,,,);
}
}
第二、非父子组件间的父子传值
 
 1.首先:
 
 
 
第一种:
main.js: 
 
import Vue from 'vue'
import App from './App.vue' 
给Vue实例化添加一个$center的方法 
Vue.prototype.$center = new Vue();
 
第二种:
 
main.js:   
import Vue from 'vue'
import App from './App.vue'
import center from './center' Vue.prototype.$center = center; const vm = new Vue({
el: '#app',
render: h=>h(App)
})
center.js文件: export default {
$on: function(eventName, callback){
// 根据事件名字获得了回调
// 保存所有的回调函数
}, $emit: function(eventName, ...rest){
// 根据事件名字,调用对应的回调函数
// 调出来之前保存的相同事件名字的回调函数,一个一个执行。
},
$off: function(){
}
}
ba.vue文件:
 methods: {
//发送事件:(触发事件发送参数)
sendAction(){
console.log(this.value);
//触发事件
this.$center.$emit('send-data', this.value);
}
}
bb.vue文件:(接收参数) created() {
// 监听事件
this.$center.$on('send-data', this.listener);
},
beforeDestroy(){
console.log('组件销毁前');
//移除监听
this.$center.$off('send-data', this.listener);
}

三.页面跳转通过路由带参数传递数据

// 1.页面中的代码
this.$router.push({
name: 'generalAdminOrderFlowAdd',
params: {
type: 'add',
templateType: this.orderTemplateType
}
})
或 this.$router.push({
name: 'routePage',
query/params: {
routeParams: params
}
})

需要注意的是,实用params去传值的时候,在页面刷新时,参数会消失,用query则不会有这个问题。

 这样使用起来很方便,但url会变得很长,而且如果不是使用路由跳转的界面无法使用。

 // 2.路由中的代码
 {
path: ':type/:templateType',
name: 'generalAdminOrderFlowAdd',
component: require('@/components/generalAdmin/order/orderFlow')
}
// 3.获取页面中的参数值
 let type = this.$route.params.type

四 、使用vuex进行数据传递;

在应用复杂时,推荐使用vue官网推荐的vuex,以下讨论简单SPA中的组件间传值。

// 1.index.js页面代码
import Vue from 'vue'
import Vuex from 'vuex'
import mutations from './mutations'
import actions from './actions'
import getters from './getters' Vue.use(Vuex)
const state = {
order: {} //声明order对象
}
export default new Vuex.Store({
state,
mutations,
actions,
getters
})
//2. getters.js页面的代码
export default {
// 声明获取order的方法
getOrder (state) {
return state.order
}
}
//3. mutation.js页面的代码
export default {
//设置order的值
SET_ORDER (state, order) {
state.order = order
}
// 4.在页面中设置调用set方法设置全局order的值
this.$store.commit('SET_ORDER', order)// SET_ORDER为order值的设置方法的方法名
// 5.获取全局的order值

// 从vuex中获取order

let template = this.$store.state.order

五.通过$parent,$chlidren等方法调取用层级关系的组件内的数据和方法
通过下面的方法调用: this.$parent.$data.id //获取父元素data中的id this.$children.$data.id //获取父元素data中的id 这样用起来比较灵活,但是容易造成代码耦合性太强,导致维护困难 六、通过eventBus传递数据 使用前可以在全局定义一个eventBus window.eventBus = new Vue(); 在需要传递参数的组件中,定义一个emit发送需要传递的值,键名可以自己定义(可以为对象) eventBus.$emit('eventBusName', id); 在需要接受参数的组件重,用on接受该值(或对象) //val即为传递过来的值 eventBus.$on('eventBusName', function(val) { console.log(val) } ) 最后记住要在beforeDestroy()中关闭这个eventBus eventBus.$off('eventBusName');

vue项目各页面间的传值的更多相关文章

  1. 使用Block来进行页面间的传值

    Block语法 定义Block //定义类型 typedef void (^ReceiveMessageBlock)(NSString *); //申明变量 ReceiveMessageBlock t ...

  2. HTML5 Web存储 页面间进行传值

    在实际使用过程中,经常会遇到需要在页面间进行传值的情况,最初设想一定需要后端才能进行数据的存储和读取,或者在本地使用一个cookie进行保存,直到了解到HTML5 Web存储 使用HTML5的新特性可 ...

  3. B/S结构中页面间的传值

    常见的页面间的传值有session,cookie,application,server.transfer(),queryString,今天主要记录一下server.transfer()的用法. 从A页 ...

  4. 前端Vue项目——登录页面实现

    一.geetest滑动验证 geetest官方文档地址:https://docs.geetest.com/ 产品——极速验证:基于深度学习的人机识别应用.极验「行为验证」是一项可以帮助你的网站与APP ...

  5. vue项目刷新页面,使数据不丢失(sessionStorage、localStorage、cookie)

    vue项目刷新页面时,存储在vuex中的数据会丢失,把他们存到stroage中可以保证不丢失.

  6. JSP页面间的传值方法总结

    JSP 页面间传递参数是项目中经常需要的,这应该算是 web 基本功吧.试着将各种方式总结下来,需要时可以进行权衡利弊选择最合适的方式.下面来一起看看详细的介绍: 1. URL 链接后追加参数 ? 1 ...

  7. vue程序中组件间的传值方式

    vue程序在组件中进行传值有多种方式,这里记录我在项目中使用到的三种: 1. 父组件向子组件传值 2. 子组件向父组件传值 3. 通过路由传参 父组件通过props向子组件传值 在子组件script中 ...

  8. Vue—非父子组件间的传值(Bus/发布订阅模式/观察者模式/总线)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. UWP开源项目 LLQNotifier 页面间通信利器(移植EventBus)

    前言 EventBus是一个Android版本的页面间通信库,这个库让页面间的通信变得十分容易且大幅降低了页面之间的耦合.小弟之前玩Android的时候就用得十分顺手,现在玩uwp就觉得应该在这平台也 ...

随机推荐

  1. HTTP header parsing errors will be logged at DEBUG level

    -- ::-exec-] INFO org.apache.coyote.http11.Http11Processor - Error parsing HTTP request header Note: ...

  2. Qt学习之网络编程(二)

    UDP协议 UDP协议(用户数据报协议)是一种简单轻量级.不可靠.面向数据报.无连接的传输层协议.之后我们会介绍TCP协议,相对于UDP,TCP是一种可靠的.有连接的协议:既然这样我们就用TCP不就好 ...

  3. 如何理解javascript中的同步和异步

    javascript语言是一门“单线程”的语言,不像java语言,类继承Thread再来个thread.start就可以开辟一个线程,所以,javascript就像一条流水线,仅仅是一条流水线而已,要 ...

  4. jap的教程

    第一个资料:   https://wenku.baidu.com/view/5ca6ce6a1eb91a37f1115cee.html 第二个资料 :http://www.yiibai.com/jpa ...

  5. 练习六:斐波那契数列(fibonacci)

    题目:斐波那契数列. 程序分析:斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21.34.……. 在数学上,斐波那契数列 ...

  6. CAST 变类型,如 SELECT CAST('12' AS int)

    select distinct CAST(value as signed) valueprice,CAST(value as signed) valueid from app_coupon

  7. Sqoop概述

    sqoop Sqoop 是传统数据库与 Hadoop 之间数据同步的工具,它是 Hadoop 发展到一定程度的必然产物,它主要解决的是传统数据库和Hadoop之间数据的迁移问题.这节课我们将详细介绍 ...

  8. idea没有绑远程地址,如何提交到github的空项目

    一 有同事问我怎么提交到github的空项目....这么简单.... 二 1.创建本地的git仓库 选择自己的项目 创建成功 2.添加代码,选中左边的文件,add 3.提交 5.定义远程仓库,不定义的 ...

  9. C#中动态创建数据库和数据表,很经典【转】

    用ADOX创建access数据库方法很简单,只需要new一个Catalog对象,然后调用它的Create方法就可以了,如下: ADOX.Catalog catalog = new Catalog(); ...

  10. eclipse加上电脑全黑主题的设置(win10)

    eclipse加上电脑全黑主题的设置(win10) 前几天在找设置win10的边框颜色时,发现的这个高对比的功能,现在已经用了好几天了,自己感觉是真的好用,所有才分享出来,相比所谓网上的豆沙绿,果然感 ...