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 相关文章推荐
理清apply(),call()的区别和关系
Aug 14 Javascript
js下获得客户端操作系统的函数代码(1:vista,2:windows7,3:2000,4:xp,5:2003,6:2008)
Oct 31 Javascript
jquery 操作iframe的几种方法总结
Dec 13 Javascript
jQuery简单实现仿京东分类导航层效果
Jun 07 Javascript
JS控制层作圆周运动的方法
Jun 20 Javascript
JavaScript基于原型链的继承
Jun 22 Javascript
JQuery动态添加Select的Option元素实现方法
Aug 29 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(二)
Sep 14 Javascript
AngularJS开发教程之控制器之间的通信方法分析
Dec 25 Javascript
在javascript中,null>=0 为真,null==0却为假,null的值详解
Feb 22 Javascript
基于JS实现限时抢购倒计时间表代码
May 09 Javascript
jQuery 控制文本框自动缩小字体填充
Jun 16 jQuery
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 如何向 MySQL 发送数据
2006/10/09 PHP
一个PHP验证码类代码分享(已封装成类)
2011/07/17 PHP
QQ登录 PHP OAuth示例代码
2011/07/20 PHP
PHP 观察者模式的实现代码
2013/05/10 PHP
用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤
2014/01/19 PHP
php+html5实现无刷新图片上传教程
2016/01/22 PHP
PHP使用PDO、mysqli扩展实现与数据库交互操作详解
2019/07/20 PHP
laravel 解决后端无法获取到前端Post过来的值问题
2019/10/22 PHP
jquery ready()的几种实现方法小结
2010/06/18 Javascript
jquery随机展示头像代码
2011/12/21 Javascript
jQuery数组处理代码详解(含实例演示)
2012/02/03 Javascript
Array.prototype.concat不是通用方法反驳[译]
2012/09/20 Javascript
用jQuery获取IE9下拉框默认值问题探讨
2013/07/22 Javascript
jQuery scroll事件实现监控滚动条分页示例
2014/04/04 Javascript
JS访问SWF的函数用法实例
2015/07/01 Javascript
值得学习的bootstrap fileinput文件上传工具
2016/11/08 Javascript
JavaScript正则表达式和级联效果
2017/09/14 Javascript
js断点调试经验分享
2017/12/08 Javascript
Vue 2.5.2下axios + express 本地请求404的解决方法
2018/02/21 Javascript
浅谈angularJS2中的界面跳转方法
2018/08/31 Javascript
详解vue-cli项目开发/生产环境代理实现跨域请求
2019/07/23 Javascript
Vue通过getAction的finally来最大程度避免影响主数据呈现问题
2020/04/24 Javascript
解决echarts图表使用v-show控制图表显示不全的问题
2020/07/19 Javascript
JS实现4位随机验证码
2020/10/19 Javascript
利用numpy+matplotlib绘图的基本操作教程
2017/05/03 Python
分享6个隐藏的python功能
2017/12/07 Python
详解Python with/as使用说明
2018/12/13 Python
Python中的Socket 与 ScoketServer 通信及遇到问题解决方法
2019/04/01 Python
PyQt5固定窗口大小的方法
2019/06/18 Python
python 函数嵌套及多函数共同运行知识点讲解
2020/03/03 Python
Django celery异步任务实现代码示例
2020/11/26 Python
HTML5 form标签之解放表单验证、增加文件上传、集成拖放的使用方法
2013/04/24 HTML / CSS
英语教育专业毕业生求职信
2014/08/28 职场文书
小学教师党员承诺书
2015/04/27 职场文书
七年级作文之下雨天
2019/12/23 职场文书
Go语言的协程上下文的几个方法和用法
2022/04/11 Golang