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 each函数的链式调用
Jul 22 Javascript
ExtJS4 Grid改变单元格背景颜色及Column render学习
Feb 06 Javascript
面向对象继承实例(a如何继承b问题)(自写)
Jul 01 Javascript
JavaScript的作用域和块级作用域概念理解
Sep 21 Javascript
jquery实现的蓝色二级导航条效果代码
Aug 24 Javascript
jquery.tableSort.js表格排序插件使用方法详解
Aug 12 Javascript
关于jQuery中fade(),show()起始位置的一点小发现
Apr 25 jQuery
详解Vue中一种简易路由传参办法
Sep 15 Javascript
微信小程序实现下拉刷新和轮播图效果
Nov 21 Javascript
详解js中let与var声明变量的区别
Apr 05 Javascript
vue自定义正在加载动画的例子
Nov 14 Javascript
vue 实现锚点功能操作
Aug 10 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
Thinkphp5框架中引入Markdown编辑器操作示例
2020/06/03 PHP
Use Word to Search for Files
2007/06/15 Javascript
2010年最佳jQuery插件整理
2010/12/06 Javascript
jQuery代码优化 遍历篇
2011/11/01 Javascript
jQuery oLoader实现的加载图片和页面效果
2015/03/14 Javascript
jQuery背景插件backstretch使用指南
2015/04/21 Javascript
Javascript对象Clone实例分析
2015/06/09 Javascript
jquery原理以及学习技巧介绍
2015/11/11 Javascript
JS实用技巧小结(屏蔽错误、div滚动条设置、背景图片位置等)
2016/06/16 Javascript
JS实现的找零张数最小问题示例
2017/11/28 Javascript
angularJS实现动态添加,删除div方法
2018/02/27 Javascript
解决vue单页路由跳转后scrollTop的问题
2018/09/03 Javascript
脚手架vue-cli工程webpack的作用和特点
2018/09/29 Javascript
如何通过shell脚本自动生成vue文件详解
2019/09/10 Javascript
[01:06:43]完美世界DOTA2联赛PWL S3 PXG vs GXR 第二场 12.19
2020/12/24 DOTA
对Python 数组的切片操作详解
2018/07/02 Python
python代码 FTP备份交换机配置脚本实例解析
2019/08/01 Python
Python如何调用JS文件中的函数
2019/08/16 Python
python使用多线程编写tcp客户端程序
2019/09/02 Python
Python+Dlib+Opencv实现人脸采集并表情判别功能的代码
2020/07/01 Python
HTML5逐步分析实现拖放功能的方法
2020/09/30 HTML / CSS
Clarks鞋法国官方网站:英国其乐鞋品牌
2018/02/11 全球购物
法国最大电子商务平台:Cdiscount
2018/03/13 全球购物
意大利在线药房:shop-farmacia.it
2019/03/12 全球购物
The Outnet亚太地区:折扣设计师时装店
2019/12/05 全球购物
JAVA的事件委托机制和垃圾回收机制
2014/09/07 面试题
铭立家具面试题
2012/12/06 面试题
公司周年庆典邀请函
2014/01/12 职场文书
安全生产先进个人材料
2014/02/06 职场文书
品牌转让协议书
2014/08/20 职场文书
2014年入党积极分子学习三中全会思想汇报
2014/09/13 职场文书
医生个人自我剖析材料
2014/10/08 职场文书
2014年招商引资工作总结
2014/11/22 职场文书
2015年全国助残日活动方案
2015/05/04 职场文书
迎新生晚会主持词
2015/06/30 职场文书
2016猴年春节问候语
2015/11/11 职场文书