vuejs父子组件之间数据交互详解


Posted in Javascript onAugust 09, 2017

父子组件之间的数据交互遵循:

props down - 子组件通过props接受父组件的数据
events up - 父组件监听子组件$emit的事件来操作数据

示例

子组件的点击事件函数中$emit自定义事件

export default {
 name: 'comment',
 props: ['issue','index'],
 data () {
 return {
  comment: '',
 }
 },
 components: {},
 methods: {
 removeComment: function(index,cindex) {
  this.$emit('removeComment', {index:index, cindex:cindex});
 },
 saveComment: function(index) {
  this.$emit('saveComment', {index: index, comment: this.comment});
  this.comment="";
 }
 },
 //hook 
 created: function () {
 //get init data

 }

}

父组件监听事件

<comment v-show="issue.show_comments" :issue="issue" :index="index" @removeComment="removeComment" @saveComment="saveComment"></comment>

父组件的methods中定义了事件处理程序

removeComment: function(data) {
  var index = data.index, cindex = data.cindex;
  var issue = this.issue_list[index];
  var comment = issue.comments[cindex];
  axios.get('comment/delete/cid/'+comment.cid)
  .then(function (resp) {
  issue.comments.splice(cindex,1);
  });
 },
 saveComment: function(data) {
  var index = data.index;
  var comment = data.comment;
  var that = this;
  var issue =that.issue_list[index];
  var data = {
  iid: issue.issue_id,
  content: comment
  };

  axios.post('comment/save/',data)
  .then(function (resp) {
  issue.comments=issue.comments||[];
  issue.comments.push({
   cid: resp.data,
   content: comment
  });
  });
  
  //clear comment input
  this.comment="";
 }

 },

注意参数的传递是一个对象

其实还有更多的场景需要组件间通信

官方推荐的通信方式

  • 首选使用Vuex
  • 使用事件总线:eventBus,允许组件自由交流
  • 具体可见:$dispatch 和 $broadcast替换

 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
6个DIV 135或246间隔一秒轮番显示效果
Jul 24 Javascript
了解了这些才能开始发挥jQuery的威力
Oct 10 Javascript
js 金额格式化来回转换示例
Feb 23 Javascript
AngularJS学习笔记之依赖注入详解
May 16 Javascript
AngularJS 过滤器的简单实例
Jul 27 Javascript
AngularJS 工作原理详解
Aug 18 Javascript
让浏览器崩溃的12行JS代码(DoS攻击分析及防御)
Oct 10 Javascript
Mui使用jquery并且使用点击跳转新窗口的实例
Aug 19 jQuery
node.js-v6新版安装具体步骤(分享)
Sep 06 Javascript
vue自定义switch开关组件,实现样式可自行更改
Nov 01 Javascript
js仿京东放大镜效果
Aug 09 Javascript
详解Vue项目的打包方式(生成dist文件)
Jan 18 Vue.js
Angular在模板驱动表单中自定义校验器的方法
Aug 09 #Javascript
浅谈react+es6+webpack的基础配置
Aug 09 #Javascript
js中less常用的方法小结
Aug 09 #Javascript
利用JS做网页特效_大图轮播(实例讲解)
Aug 09 #Javascript
基于Vue实例对象的数据选项
Aug 09 #Javascript
react-native之ART绘图方法详解
Aug 08 #Javascript
jQuery Easyui Treegrid实现显示checkbox功能
Aug 08 #jQuery
You might like
发布一个用PHP fsockopen写的HTTP下载的类
2007/02/22 PHP
PHP 生成的XML以FLASH获取为乱码终极解决
2009/08/07 PHP
Laravel框架实现利用监听器进行sql语句记录功能
2018/06/06 PHP
laravel5环境隐藏index.php后缀(apache)的方法
2019/10/12 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
Swoole扩展的6种模式深入详解
2021/03/04 PHP
jquery trim() 功能源代码
2011/02/14 Javascript
原生JS可拖动弹窗效果实例代码
2013/11/09 Javascript
现代 JavaScript 开发编程风格Idiomatic.js指南中文版
2014/05/28 Javascript
Js获取图片原始宽高的实现代码
2016/05/17 Javascript
HTML的select控件美化
2017/03/27 Javascript
jquery dataTable 后台加载数据并分页实例代码
2017/06/07 jQuery
Bootstrap Tooltip显示换行和左对齐的解决方案
2017/10/11 Javascript
浅谈实现vue2.0响应式的基本思路
2018/02/13 Javascript
js+canvas实现滑动拼图验证码功能
2018/03/26 Javascript
js正则表达式校验指定字符串的方法
2018/07/23 Javascript
javascript 原型与原型链的理解及应用实例分析
2020/02/10 Javascript
[01:27:43]VGJ.S vs TNC Supermajor 败者组 BO3 第三场 6.6
2018/06/07 DOTA
Python中用Ctrl+C终止多线程程序的问题解决
2013/03/30 Python
详解使用python crontab设置linux定时任务
2016/12/08 Python
详解django中自定义标签和过滤器
2017/07/03 Python
详解django自定义中间件处理
2018/11/21 Python
python 读取竖线分隔符的文本方法
2018/12/20 Python
CSS3线性渐变简单实现以及该属性在浏览器中的不同
2012/12/12 HTML / CSS
css3的图形3d翻转效果应用示例
2014/04/08 HTML / CSS
Eagle Eyes Optics鹰眼光学:高性能太阳镜
2018/12/07 全球购物
Melissa鞋英国官方网站:Nonnon
2019/05/01 全球购物
乌克兰数字设备、配件和智能技术的连锁商店:KTC
2020/08/18 全球购物
Chinti & Parker官网:奢华羊绒女装和创新针织设计
2021/01/01 全球购物
String s = new String(“xyz”);创建了几个String Object?
2015/08/05 面试题
机动车交通事故协议书
2015/01/29 职场文书
中学生逃课检讨书
2015/02/17 职场文书
应届毕业生自荐信
2015/03/04 职场文书
新入职员工工作总结
2015/10/15 职场文书
导游词之大雁塔景区
2019/09/17 职场文书
Java基础之this关键字的使用
2021/06/30 Java/Android