大家好,今天给大家带来Vue项目中同级组件之间传值的例子,父子组件之间的通信比较简单,这里不做讨论。

假设该项目中的需求如下:

      图中左上角有一个按钮,我们的需求是点击它时,侧边导航栏收缩且主界面放大,如下图所示

因为vue项目是组件化的,那么就有组件之间传值的需求了,下面是具体的编码操作:

1. 首先在项目的src路径下创建一个js文件,这里命名为byval.js,在该文件中写入如下代码:

/*jslint esversion:6 */
import Vue from 'vue';
export default new Vue();

2. 在头部组件中(包含点击收缩导航栏按钮)需要传递当前是否收缩侧边导航栏的信息给侧边导航栏和主界面两个组件,所以在头部文件写入如下代码:

import New from "./new.js";

export default {
data: function() {
return {
isToggle: false,
// isToggle 是判断是否收缩导航栏的变量,默认为true表示收缩
};
},
methods: {
// onToggle是处理按钮点击事件的函数
onToggle: function() {
// 当点击时,切换当前状态
this.isToggle = !this.isToggle;
// 触发 on-toggle-nav 事件并返回当前导航栏的收缩状态变量
New.$emit("on-toggle-nav", this.isToggle);
}
}
};

3. 在侧边导航栏组件中,需要接受头部导航栏传递过来的变量,判断当前是否收缩导航栏,所以在侧边导航栏组件中写入如下代码

export default {
data:{
toggle:false,
}
,created(){
// 绑定on-toggle-nav事件,并在事件触发时,接受头部组件中传来的值
New.$on("on-toggle-nav", data => {
// 根据头部中传来的值更新当前组件中对应的变量
if (data === false) {
this.toggle = true;
} else {
this.toggle = false;
}
});
}
};

4. 在主界面中组件中,需要接受头部导航栏中传递过来的变量,判断当前是否最大化主界面,代码逻辑和侧边导航栏组件中的是一致的所以不在此赘述。

好了,vue项目中同级组件互相传值的过程就是这样啦,谢谢大家的阅读

Vue项目中同级组件传值的例子的更多相关文章

  1. vue项目中使用组件化开发

    最近在使用vue-cli结合webpack打包工具开发一个后台管理系统,使用vue难免需要运用组件化思想,而这也正是vue的一大特点. 在之前做的vue项目中,稍微有一点组件化的思想,可能是对组件化不 ...

  2. 关于vue项目中使用组件的一些心得

    在编写一个可能是共组件的情况下,尽量在组件内部只处理相关组件内部的逻辑,组件外的逻辑通过事件总线emit,否则一旦当前组件涉及其他组件的逻辑就会发生耦合,在一个新的组件里面使用的时候,就会造成后悔的情 ...

  3. vue父子组件传值加例子

    例子:http://element-cn.eleme.io/#/zh-CN/component/form         上进行改的 父传子:用prop:子组件能够改变父组件的值,是共享的,和父操作是 ...

  4. vue项目引入FastClick组件解决IOS系统下h5页面中的按钮点击延迟,连续点击无反应的问题

    异常描述: ios系统手机中访问h5页面,按钮点击有延迟,连续点击卡顿.无反应. 异常原因: 这要追溯至 2007 年初.苹果公司在发布首款 iPhone 前夕,遇到一个问题:当时的网站都是为大屏幕设 ...

  5. vue项目中设置全局引入scss,使每个组件都可以使用变量

    在Vue项目中使用scss,如果写了一套完整的有变量的scss文件.那么就需要全局引入,这样在每个组件中使用. 可以在mian.js全局引入,下面是使用方法. 1: 安装node-sass.sass- ...

  6. 解决vue项目中遇到父组件的按钮或操作控制重新挂载子组件但是子组件却无效果的情况

    在vue项目中终会遇到需要父组件的按钮或操作控制重新挂载子组件的需求,我在新项目中就遇到这种需求.真实场景是父组件的早,中,晚三个按钮(代表三个时间段)来控制子组件的table表格列的动态加载. 子组 ...

  7. <转载> VUE项目中CSS管理

    vue的scoped 在vue项目中,当 .vue文件中 <style> 标签有 *scoped 属性时,它的 CSS 只作用于当前组件中的元素,很好的实现了样式私有化的目的. 使用sco ...

  8. vue项目中遇到的一些问题

    或访问:https://github.com/littleHiuman/experiences-about-vue  欢迎补充! vuex 状态 vue-cli 命令行 vue vue vue-rou ...

  9. vue项目中使用ts(typescript)入门教程

    最近项目需要将原vue项目结合ts的使用进行改造,这个后面应该是中大型项目的发展趋势,看到一篇不错的入门教程,结合它并进行了一点拓展记录之.本文从安装到vue组件编写进行了说明,适合入门. 1.引入T ...

随机推荐

  1. C++之手写strlen函数

    代码: int strlen(const char *str){ assert(str!=NULL); intlen=; while((*str++)!='\0') len++; return len ...

  2. jQuery 封装的ajax

    jquery封装的ajax 具体操作: $.get(url  [,data]  [,fn回调函数]   [, dataType]); data:给服务器传递的数据,请求字符串 .json对象 都可以设 ...

  3. kafka原理概念提炼

    Kafka Kafka是最初由Linkedin公司开发,是一个分布式.支持分区的(partition).多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实 ...

  4. MySQL将查询结果写入到文件的2种方法

    1.SELECT INTO OUTFIL: 这种方法不能覆盖或者追加到已经存在的文件,只能写入到新文件,并且建立文件的路径需要mysql进程用户有权限建立新文件. mysql 61571 60876 ...

  5. 1-vim-简介

    vi(visual interface)是Linux最经典的文本编辑器 vi的核心设计思想-让程序员的手指始终保持在键盘的核心区域,就能完成所有的编辑操作. vi的特点 没有图形界面 只能编辑文本内容 ...

  6. pytest_fixture-----conftest共享数据及不同层次共享

    场景:你与其他测试工程师合作一起开发时,公共的模块要在不同文件中,要 在大家都访问到的地方. 解决:使用conftest.py 这个文件进行数据共享,并且他可以放在不同位置起 着不同的范围共享作用. ...

  7. css切角效果,折角效果

    html <div class="one">12345</div> <div class="two">abcde</d ...

  8. js 实现图片懒加载

    搬运自其他大神,因为找不到链接了就没放,找到了补上. 个人情况:页面超过一屏,下方是大量图片数据(后台传来的html数据) ,想做到一开始不加载下方图片,滚动到进入可视区再加载图片. html:(需先 ...

  9. 微信小程序学习之navigate(1)navigateTo方法与navigateBack方法对于page生命周期不同的触发影响

    小程序的每个页面都有一些生命周期,每个生命周期由分别有着不同的生命周期钩子函数.而我们的业务逻辑写在这些生命周期的钩子函数中,那么弄清楚那种情形下会触发那些生命周期钩子函数就非常重要了 先上一段代码 ...

  10. d3操作svg路径动画,及dom移动

    图片跟随路径循环运动,dom也跟着路径运动(利用实时获取坐标位置的方法,改变transform) 1,准备路径 a,自己脑补路径 b,在ps上画好,然后在保存成png-24图片,背景透明,在网站htt ...