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 相关文章推荐
改善你的jQuery的25个步骤 千倍级效率提升
Feb 11 Javascript
iframe里使用JavaScript控制主页转向的方法
Apr 03 Javascript
Javascript通过overflow控制列表闭合与展开的方法
May 15 Javascript
JS实现横向拉伸动感伸缩菜单效果代码
Sep 04 Javascript
学习JavaScript设计模式(接口)
Nov 26 Javascript
Angularjs 制作购物车功能实例代码
Sep 14 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
Jan 12 Javascript
addeventlistener监听scroll跟touch(实例讲解)
Aug 04 Javascript
判断jQuery是否加载完成,没完成继续判断的解决方法
Dec 06 jQuery
JS遍历DOM文档树的方法实例详解
Apr 03 Javascript
vuex actions传递多参数的处理方法
Sep 18 Javascript
微信小程序实现语音识别转文字功能及遇到的坑
Aug 02 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
PHP的类 功能齐全的发送邮件类
2006/10/09 PHP
php中记录用户访问过的产品,在cookie记录产品id,id取得产品信息
2011/05/04 PHP
php 字符串中的\n换行符无效、不能换行的解决方法
2014/04/02 PHP
解析WordPress中函数钩子hook的作用及基本用法
2015/12/22 PHP
基于jquery实现的鼠标滑过按钮改变背景图片
2011/07/15 Javascript
定义JavaScript二维数组采用定义数组的数组来实现
2012/12/09 Javascript
JavaScript中的字符串操作详解
2013/11/12 Javascript
创建自己的jquery表格插件
2015/11/25 Javascript
在windows上用nodejs搭建静态文件服务器的简单方法
2016/08/11 NodeJs
AngularJs Forms详解及简单示例
2016/09/01 Javascript
微信小程序中多个页面传参通信的学习与实践
2017/05/05 Javascript
纯js实现页面返回顶部的动画(超简单)
2017/08/10 Javascript
ES6中javascript实现函数绑定及类的事件绑定功能详解
2017/11/08 Javascript
vue中的适配px2rem示例代码
2018/11/19 Javascript
详解vuex持久化插件解决浏览器刷新数据消失问题
2019/04/15 Javascript
解决vue打包后刷新页面报错:Unexpected token
2019/08/27 Javascript
小程序点餐界面添加购物车左右摆动动画
2020/09/23 Javascript
自己使用总结Python程序代码片段
2015/06/02 Python
Python 两个列表的差集、并集和交集实现代码
2016/09/21 Python
Python爬取网易云音乐上评论火爆的歌曲
2017/01/19 Python
Python中Django发送带图片和附件的邮件
2017/03/31 Python
Python有序查找算法之二分法实例分析
2017/12/11 Python
python实现车牌识别的示例代码
2019/08/05 Python
Pytorch在dataloader类中设置shuffle的随机数种子方式
2020/01/14 Python
Python第三方包PrettyTable安装及用法解析
2020/07/08 Python
PyQt5-QDateEdit的简单使用操作
2020/07/12 Python
Python 在函数上添加包装器
2020/07/28 Python
python实现ping命令小程序
2020/12/28 Python
美国领先的医疗警报服务:Philips Lifeline
2018/03/12 全球购物
英国Boots旗下太阳镜网站:Boots Designer Sunglasses
2018/07/07 全球购物
Zooplus罗马尼亚:宠物食品和配件
2019/11/02 全球购物
C语言编程题
2015/03/09 面试题
计算机专业优秀大学生自我总结
2014/01/21 职场文书
女性健康知识讲座主持词
2015/07/04 职场文书
python 爬取京东指定商品评论并进行情感分析
2021/05/27 Python
Golang MatrixOne使用介绍和汇编语法
2022/04/19 Golang