Vue 组件修改根实例的数据的方法


Posted in Javascript onApril 02, 2019

思路:

1 在组件内部监听事件并把事件 emit

2 在组件上监听 emit 出来的事件

3 当事件发生时执行对应的函数去修改根实例上的 data

实现:

1 在组件内部的 input框 中监听 input事件,并给 input事件 绑定triggerInput函数

2 当往 input框 中输入内容时,触发 triggerInput 函数

triggerInput函数 向外部 emit 一个 edit事件 和 输入框的值

3 在组件上监听这个 edit事件 并给 edit事件 绑定 triggerEdit函数

4 此时会触发 triggerEdit函数,triggerEdit函数 就能去修改根实例上的 data

注意:

1 triggerEdit函数 的第一个参数为你想要修改的根实例 data 的 key

2 第二个参数 $event 是套路,有这个参数才能在 triggerEdit函数 中获取组件内部 emit 出来的 input框的值

3 可以在 triggerEdit函数中 log 出组件内部发生的 event

<!DOCTYPE html>
<html>
 <head>
 <meta charset="utf-8">
 <title></title>
 <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
 </head>
 <body>
 <div id="app">
  根实例的 data message:{{message}}
  <br>
  根实例的 data name:{{name}}
  <br>
  message:
  <component-demo1
  v-on:edit="triggerEdit('message', $event)"
  ></component-demo1>
  name:
  <component-demo1
  v-on:edit="triggerEdit('name', $event)"
  ></component-demo1>
 </div>
 </body>
 <script>
 Vue.component('component-demo1', {
  template: `
  <div>
   组件内的 input:
   <input
   v-on:input='triggerInput'
   >
  </div>
  `,
  methods: {
  triggerInput: function (e) {
   this.$emit('edit', e.target.value)
  },
  },
 })
 var app = new Vue({
  el: '#app',
  data: {
  message: 'hello vue',
  name: 'gua',
  },
  methods: {
  triggerEdit: function (key, value) {
   this[key] = value
  }
  }
 })
 </script>
</html>

Vue 组件修改根实例的数据的方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
一个JS翻页效果
Jul 23 Javascript
把html页面的部分内容保存成新的html文件的jquery代码
Nov 12 Javascript
封装的jquery翻页滚动(示例代码)
Nov 18 Javascript
解决JS中乘法的浮点错误的方法
Jan 03 Javascript
JS实现控制表格只显示行边框或者只显示列边框的方法
Mar 31 Javascript
元素绑定click点击事件方法
Jun 08 Javascript
js点击文本框后才加载验证码实例代码
Oct 20 Javascript
BootStrap下拉框在firefox浏览器界面不友好的解决方案
Aug 18 Javascript
浅谈JS验证表单文本域输入空格的问题
Feb 14 Javascript
Vue2.0实现将页面中表格数据导出excel的实例
Aug 09 Javascript
vue生成文件本地打开查看效果的实例
Sep 06 Javascript
微信小程序实现的点击按钮 弹出底部上拉菜单功能示例
Dec 20 Javascript
vue鼠标悬停事件实例详解
Apr 01 #Javascript
jquery简单实现纵向的无缝滚动代码实例
Apr 01 #jQuery
详解Vue前端对axios的封装和使用
Apr 01 #Javascript
浅谈js闭包理解
Apr 01 #Javascript
详解Vue之父子组件传值
Apr 01 #Javascript
微信二次分享报错invalid signature问题及解决方法
Apr 01 #Javascript
JS中的防抖与节流及作用详解
Apr 01 #Javascript
You might like
BBS(php &amp; mysql)完整版(一)
2006/10/09 PHP
php cc攻击代码与防范方法
2012/10/18 PHP
yii实现model添加默认值的方法(2种方法)
2016/01/06 PHP
php处理单文件、多文件上传代码分享
2016/08/24 PHP
ThinkPHP5.1的权限控制怎么写?分享一个AUTH权限控制
2021/03/09 PHP
JavaScript获取GridView选择的行内容
2009/04/14 Javascript
基于Jquery与WebMethod投票功能实现代码
2011/01/19 Javascript
JavaScript获取多个数组的交集简单实例
2013/11/11 Javascript
JavaScript中的函数模式详解
2015/02/11 Javascript
jquery实现华丽的可折角广告代码
2015/09/02 Javascript
jquery 抽奖小程序实现代码
2016/10/12 Javascript
浅析Node.js:DNS模块的使用
2016/11/23 Javascript
JS去除字符串中空格的方法
2017/02/14 Javascript
Jquery把获取到的input值转换成json
2017/05/15 jQuery
详解微信小程序 登录获取unionid
2017/06/27 Javascript
详谈for循环里面的break和continue语句
2017/07/20 Javascript
Gulp实现静态网页模块化的方法详解
2018/01/09 Javascript
在webstorm开发微信小程序之使用阿里自定义字体图标的方法
2018/11/15 Javascript
[05:39]2014DOTA2西雅图国际邀请赛 淘汰赛7月14日TOPPLAY
2014/07/14 DOTA
简单的Apache+FastCGI+Django配置指南
2015/07/22 Python
基于Python打造账号共享浏览器功能
2019/05/30 Python
python实现tail实时查看服务器日志示例
2019/12/24 Python
在flask中使用python-dotenv+flask-cli自定义命令(推荐)
2020/01/05 Python
使用python求解二次规划的问题
2020/02/29 Python
PyCharm 在Windows的有用快捷键详解
2020/04/07 Python
Keras 使用 Lambda层详解
2020/06/10 Python
如何在Windows中安装多个python解释器
2020/06/16 Python
一款纯css3实现的圆形旋转分享按钮旋转角度可自己调整
2014/09/02 HTML / CSS
CSS3实现可翻转的hover效果
2018/05/23 HTML / CSS
英国假睫毛购买网站:FalseEyelashes.co.uk
2018/05/23 全球购物
美发店5.1活动方案
2014/01/24 职场文书
汽车技术服务与贸易专业求职信
2014/07/20 职场文书
2014年安全生产目标责任书
2014/07/23 职场文书
科学发展观演讲稿
2014/09/11 职场文书
食品药品安全责任书
2015/05/11 职场文书
只用40行Python代码就能写出pdf转word小工具
2021/05/31 Python