vue父组件通过props如何向子组件传递方法详解


Posted in Javascript onAugust 16, 2017

前言

本文主要给大家介绍了关于vue中父组件通过props向子组件传递方法的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍:

vue 组件中的 this

vue 中 data/computed/methods 中 this的上下文是vue实例,需注意。

例如:

注意:不应该对 data 属性使用箭头函数 (例如data: () => { return { a: this.myProp }} ) 。理由是箭头函数绑定了父级作用域的上下文,所以 this 将不会按照期望指向 Vue 实例,this.myProp 将是 undefined

https://cn.vuejs.org/v2/api/#methods

父组件通过props向子组件传递方法

父组件调用子组件,通过绑定callback属性,将方法传给子组件:

App.vue 

<search-bar class="f-fr" placeholder="请输入名字" mutationName='resetListData' :callback="callback"/>

子组件通过props获取父组件传过来的callback方法:

SearchBar.vue

export default {
 name: 'SearchBar',
 data() {
  return {
   input: ''
  }
 },
 methods: {
  setName: function () {
   var input = this.input;
   if (input.trim() == '') {
    alert("empty");
   }
   else {
    Api.searchTest(this.input,this.success );
   }

  },
  success(responseData) {
   this.callback(responseData);
  },
 },
 props: ['placeholder', 'apiName', 'moduleName', 'mutationName','callback']
}

通过 data

export default {
 ...
 data:function() {
 return {
  callback:function(responseData) {
  this.$store.commit('resetListData', responseData);
  }
 }
 },
 ...
};

此处callback以函数对象的方式,传入子组件,子组件调用的时候,this指向子组件

通过 methods

export default {
 ...
 methods: {
 callback(responseData) {
  this.$store.commit('resetListData', responseData);
 }
 }
};

此处callback是父组件的一个方法,个人理解,当父组件初始化时,该方法的this上下文就绑定了父组件的实例,因此当子组件调用callback 方法时,this指向父组件。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
jquery常用技巧及常用方法列表集合
Apr 06 Javascript
jQuery Tools Dateinput使用介绍
Jul 14 Javascript
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
Apr 08 Javascript
jquery mobile事件多次绑定示例代码
Sep 13 Javascript
理运用命名空间让js不产生冲突避免全局变量的泛滥
Jun 15 Javascript
js面向对象编程之如何实现方法重载
Jul 02 Javascript
简介JavaScript中fixed()方法的使用
Jun 08 Javascript
JS模仿腾讯图片站的图片翻页按钮效果完整实例
Jun 21 Javascript
angular动态表单制作
Feb 23 Javascript
在vue中使用jointjs的方法
Mar 24 Javascript
详解ES7 Decorator 入门解析
Feb 18 Javascript
JavaScript进阶(三)闭包原理与用法详解
May 09 Javascript
关于vue.extend和vue.component的区别浅析
Aug 16 #Javascript
在一般处理程序(ashx)中弹出js提示语
Aug 16 #Javascript
深入研究jQuery图片懒加载 lazyload.js使用方法
Aug 16 #jQuery
详谈表单重复提交的三种情况及解决方法
Aug 16 #Javascript
详谈js对url进行编码和解码(三种方式的区别)
Aug 16 #Javascript
Node.js 的模块知识汇总
Aug 16 #Javascript
vue绑定设置属性的多种方式(5)
Aug 16 #Javascript
You might like
PHP学习资料汇总与网址
2007/03/16 PHP
php将数据库导出成excel的方法
2010/05/07 PHP
php删除字符串末尾子字符,删除开始字符,删除两端字符(实现代码)
2013/06/27 PHP
CodeIgniter上传图片成功的全部过程分享
2013/08/12 PHP
PHP按行读取文件时删除换行符的3种方法
2014/05/04 PHP
PHP中遇到BOM、编码导致json_decode函数无法解析问题
2014/07/02 PHP
php遍历数组的4种方法总结
2014/07/05 PHP
php隐藏IP地址后两位显示为星号的方法
2014/11/21 PHP
Codeigniter中集成smarty和adodb的方法
2016/03/04 PHP
PHP Static延迟静态绑定用法分析
2016/03/16 PHP
php上传后台无法收到数据解决方法
2019/10/28 PHP
jquery关于页面焦点的定位(文本框获取焦点时改变样式 )
2010/09/10 Javascript
jQuery事件 delegate()使用方法介绍
2012/10/30 Javascript
Javascript 按位与赋值运算符 (&amp;=)使用介绍
2014/02/04 Javascript
js简单设置与使用cookie的方法
2016/01/22 Javascript
JS实现获取当前URL和来源URL的方法
2016/08/24 Javascript
纯js和css完成贪吃蛇小游戏demo
2016/09/01 Javascript
详解JS中的快速排序与冒泡
2017/01/10 Javascript
深入解析js轮播插件核心代码的实现过程
2017/04/14 Javascript
d3.js实现自定义多y轴折线图的示例代码
2018/05/30 Javascript
重学JS 系列:聊聊继承(推荐)
2019/04/11 Javascript
在VUE中实现文件下载并判断状态的方法
2019/11/08 Javascript
Vue axios与Go Frame后端框架的Options请求跨域问题详解
2020/03/03 Javascript
[01:04]DOTA2:伟大的Roshan雕塑震撼来临
2015/01/30 DOTA
详解Python编程中基本的数学计算使用
2016/02/04 Python
django的分页器Paginator 从django中导入类
2019/07/25 Python
查看jupyter notebook每个单元格运行时间实例
2020/04/22 Python
CSS3中:nth-child和:nth-of-type的区别深入理解
2014/03/10 HTML / CSS
基于Html5实现的语音搜索功能
2019/05/13 HTML / CSS
医学护理系毕业生求职信
2013/10/01 职场文书
师范应届生语文教师求职信
2013/10/29 职场文书
护士实习生自我鉴定范文
2013/12/10 职场文书
二年级体育教学反思
2014/01/15 职场文书
大学生在校学习的自我评价
2014/02/18 职场文书
教师考核材料
2014/05/21 职场文书
基于Python实现西西成语接龙小助手
2022/08/05 Golang