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 相关文章推荐
现代 JavaScript 开发编程风格Idiomatic.js指南中文版
May 28 Javascript
JS辨别访问浏览器判断是android还是ios系统
Aug 19 Javascript
javascript中var的重要性分析
Feb 11 Javascript
AngularJS实现全选反选功能
Dec 08 Javascript
AngularJS表单详解及示例代码
Aug 17 Javascript
JQuery实现文字无缝滚动效果示例代码(Marquee插件)
Mar 07 Javascript
jQuery扩展_动力节点Java学院整理
Jul 05 jQuery
Vue2.0学习之详解Vue 组件及父子组件通信
Dec 12 Javascript
layui结合form,table的全选、反选v1.0示例讲解
Aug 15 Javascript
vue给对象动态添加属性和值的实例
Sep 09 Javascript
vue中使用elementUI组件手动上传图片功能
Dec 13 Javascript
解决vue的touchStart事件及click事件冲突问题
Jul 21 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
NO3第三帝国留言簿制作过程
2006/10/09 PHP
php curl常见错误:SSL错误、bool(false)
2011/12/28 PHP
解析PHP中VC6 X86和VC9 X86的区别及 Non Thread Safe的意思
2013/06/28 PHP
php中error与exception的区别及应用
2014/07/28 PHP
PHP实现求解最长公共子串问题的方法
2017/11/17 PHP
php递归函数怎么用才有效
2018/02/24 PHP
JavaScript创建命名空间(namespace)的最简实现
2007/12/11 Javascript
查找页面中所有类为test的结点的方法
2014/03/28 Javascript
jQuery修改class属性和CSS样式整理
2015/01/30 Javascript
JS获取checkbox的个数简单实例
2016/08/19 Javascript
jQuery中页面返回顶部的方法总结
2016/12/30 Javascript
纯JS实现只能输入数字的简单代码
2017/06/21 Javascript
jQuery超简单遮罩层实现方法示例
2018/09/06 jQuery
angularJs提交文本框数据到后台的方法
2018/10/08 Javascript
从组件封装看Vue的作用域插槽的实现
2019/02/12 Javascript
layer关闭当前窗口页面以及确认取消按钮的方法
2019/09/09 Javascript
openlayers实现地图测距测面
2020/09/25 Javascript
python 实现堆排序算法代码
2012/06/05 Python
Nginx搭建HTTPS服务器和强制使用HTTPS访问的方法
2015/08/16 Python
深入解析Python编程中super关键字的用法
2016/06/24 Python
python实现自动登录
2018/09/17 Python
Python实现计算对象的内存大小示例
2019/07/10 Python
python导入库的具体方法
2020/06/18 Python
python与js主要区别点总结
2020/09/13 Python
处理HTML5新标签的浏览器兼容版问题
2017/03/13 HTML / CSS
戴尔加拿大官网:Dell加拿大
2016/09/17 全球购物
端口镜像是怎么实现的
2014/03/25 面试题
汽车运用工程系毕业生自荐信
2013/12/27 职场文书
2014年党员学习“三严三实”思想汇报
2014/09/15 职场文书
1000字打架检讨书
2014/11/03 职场文书
2014年少先队工作总结
2014/12/03 职场文书
通知函格式范文
2015/04/27 职场文书
名人传读书笔记
2015/06/26 职场文书
幼儿园秋季开学通知
2015/07/16 职场文书
导游词之秦始皇兵马俑博物馆
2019/09/29 职场文书
Python学习之os包使用教程详解
2022/03/21 Python