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 相关文章推荐
用cookies实现的可记忆的样式切换效果代码下载
Dec 24 Javascript
JQUERY 浏览器判断实现函数
Aug 20 Javascript
基于jquery的气泡提示效果
May 31 Javascript
基于jquery的图片幻灯展示源码
Jul 15 Javascript
Javascript 鼠标移动上去小三角形滑块缓慢跟随效果
Apr 26 Javascript
图片上传判断及预览脚本的效果实例
Aug 07 Javascript
JavaScript数值转换的三种方式总结
Jul 31 Javascript
javascript实现回到顶部特效
May 06 Javascript
vue.js实现只弹一次弹框
Jan 29 Javascript
JS实现快递单打印功能【推荐】
Jun 21 Javascript
vue 集成jTopo 处理方法
Aug 07 Javascript
vue组件入门知识全梳理
Sep 21 Javascript
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
SONY SRF-22W(33W)的电路分析和维修案例
2021/03/02 无线电
分享PHP入门的学习方法
2007/01/02 PHP
如何使用PHP实现javascript的escape和unescape函数
2013/06/29 PHP
获取URL文件名后缀
2013/10/24 PHP
php获取mysql字段名称和其它信息的例子
2014/04/14 PHP
php清空(删除)指定目录下的文件,不删除目录文件夹的实现代码
2014/09/04 PHP
php mysql like 实现多关键词搜索的方法
2016/10/29 PHP
用js实现的仿sohu博客更换页面风格(简单版)
2007/03/22 Javascript
16个最流行的JavaScript框架[推荐]
2011/05/29 Javascript
JavaScript中的6种运算符总结
2014/10/16 Javascript
JavaScript将数组转换成CSV格式的方法
2015/03/19 Javascript
jquery div模态窗口的简单实例
2016/05/28 Javascript
jQuery动态添加与删除tr行实例代码
2016/10/18 Javascript
JS插件plupload.js实现多图上传并显示进度条
2016/11/29 Javascript
Angularjs在360兼容模式下取数据缓存问题的解决办法
2017/06/22 Javascript
Vue Cli与BootStrap结合实现表格分页功能
2017/08/18 Javascript
VUE 实现滚动监听 导航栏置顶的方法
2018/09/11 Javascript
JavaScript 正则应用详解【模式、欲查、反向引用等】
2020/05/13 Javascript
详解Webpack4多页应用打包方案
2020/07/16 Javascript
在Python的gevent框架下执行异步的Solr查询的教程
2015/04/16 Python
Python编程中运用闭包时所需要注意的一些地方
2015/05/02 Python
python3.6.3安装图文教程 TensorFlow安装配置方法
2020/06/24 Python
python 实现视频流下载保存MP4的方法
2019/01/09 Python
python 瀑布线指标编写实例
2020/06/03 Python
PyQt5的QWebEngineView使用示例
2020/10/20 Python
详解CSS3弹性伸缩盒
2020/09/21 HTML / CSS
英国最大的女性服装零售商:Dorothy Perkins
2017/03/30 全球购物
澳大利亚家具和家居用品购物网站:Zanui
2018/12/29 全球购物
审计主管岗位职责
2014/01/31 职场文书
2015年双拥工作总结
2015/04/08 职场文书
故意杀人案辩护词
2015/05/21 职场文书
不同意离婚答辩状
2015/05/22 职场文书
详细介绍python类及类的用法
2021/05/31 Python
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
2021/06/07 Python
Spring Security中用JWT退出登录时遇到的坑
2021/10/16 Java/Android
关于PHP数组迭代器的使用方法实例
2021/11/17 PHP