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 相关文章推荐
用JavaScript显示随机图像或引用
Apr 21 Javascript
图文详解Heap Sort堆排序算法及JavaScript的代码实现
May 04 Javascript
jQuery添加和删除输入文本框标签代码
May 20 Javascript
Bootstrap前端开发案例一
Jun 17 Javascript
第一次接触神奇的Bootstrap导航条
Aug 09 Javascript
Bootstrap 3.x打印预览背景色与文字显示异常的解决
Nov 06 Javascript
jQuery UI插件实现百度提词器效果
Nov 21 Javascript
JS实现简易的图片拖拽排序实例代码
Jun 09 Javascript
Bootstrap实现翻页效果
Nov 27 Javascript
详解VueJS应用中管理用户权限
Feb 02 Javascript
Node.js 使用jade模板引擎的示例
May 11 Javascript
深入理解Vue.js轻量高效的前端组件化方案
Dec 10 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+FLASH实现上传文件进度条相关文件 下载
2007/07/21 PHP
php配合jquery实现增删操作具体实例
2013/12/12 PHP
php获取网页请求状态程序示例
2014/06/17 PHP
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
2015/11/15 PHP
学习php设计模式 php实现工厂模式(factory)
2015/12/07 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
浅析PHP类的反射来实现依赖注入过程
2018/02/06 PHP
Yii支持多域名cors原理的实现
2018/12/05 PHP
推荐10 款 SVG 动画的 JavaScript 库
2015/03/24 Javascript
JavaScript电子时钟倒计时第二款
2016/01/10 Javascript
详解Angular的内置过滤器和自定义过滤器【推荐】
2016/12/26 Javascript
loading动画特效小结
2017/01/22 Javascript
Angularjs单选改为多选的开发过程及问题解析
2017/02/17 Javascript
js实现省市级联效果分享
2017/08/10 Javascript
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
2018/08/20 Javascript
手淘flexible.js框架使用和源代码讲解小结
2018/10/15 Javascript
vue 组件简介
2020/07/31 Javascript
Python入门篇之数字
2014/10/20 Python
Python实现对象转换为xml的方法示例
2017/06/08 Python
python3 图片referer防盗链的实现方法
2018/03/12 Python
利用python实现微信头像加红色数字功能
2018/03/26 Python
python实现对指定字符串补足固定长度倍数截断输出的方法
2018/11/15 Python
python读取与处理netcdf数据方式
2020/02/14 Python
python如何输出反斜杠
2020/06/18 Python
基于Python3读写INI配置文件过程解析
2020/07/23 Python
pytorch Dataset,DataLoader产生自定义的训练数据案例
2021/03/03 Python
详解HTML5新增标签
2017/11/27 HTML / CSS
FORZIERI澳大利亚站:全球顶级奢华配饰精品店
2016/12/31 全球购物
SIMON MILLER官网:洛杉矶的生活方式品牌
2020/10/19 全球购物
PHP如何自定义函数
2016/09/16 面试题
投标单位介绍信
2014/01/09 职场文书
幼儿园教师辞职信
2014/01/18 职场文书
幼儿园大班教学反思
2014/02/10 职场文书
2014年学校党建工作总结
2014/11/11 职场文书
如何制定一份可行的计划!
2019/06/21 职场文书
海贼王十大潜力果实,路飞仅排第十,第一可毁世界(震震果实)
2022/03/18 日漫