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下实现overlay遮罩层代码
Aug 25 Javascript
使用node.js半年来总结的 10 条经验
Aug 18 Javascript
Jquery结合HTML5实现文件上传
Jun 25 Javascript
Angular.JS中的this指向详解
May 17 Javascript
angular bootstrap timepicker TypeError提示怎么办
Jun 13 Javascript
jQuery选择器_动力节点Java学院整理
Jul 05 jQuery
微信小程序获取手机系统信息的方法【附源码下载】
Dec 07 Javascript
使用axios实现上传图片进度条功能
Dec 21 Javascript
JavaScript 日期时间选择器一些小结
Apr 02 Javascript
JS页面获取 session 值,作用域和闭包学习笔记
Oct 16 Javascript
Node配合WebSocket做多文件下载以及进度回传
Nov 07 Javascript
vue项目实现减少app.js和vender.js的体积操作
Nov 12 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使用session二维数组实例
2014/11/06 PHP
php连接oracle数据库及查询数据的方法
2014/12/29 PHP
PHP Streams(流)详细介绍及使用
2015/05/12 PHP
jquery遍历input取得input的name
2009/04/27 Javascript
一些Javascript的IE和Firefox(火狐)兼容性的问题总结及常用例子
2009/05/21 Javascript
json的前台操作和后台操作实现代码
2012/01/20 Javascript
当达到输入长度时表单自动切换焦点
2014/04/06 Javascript
jQuery插件kinMaxShow扩展效果用法实例
2015/05/04 Javascript
js 动态添加元素(div、li、img等)及设置属性的方法
2016/07/19 Javascript
利用jQuery实现打字机字幕效果实例代码
2016/09/02 Javascript
C#微信小程序服务端获取用户解密信息实例代码
2017/03/10 Javascript
bootstrap3 dialog 更强大、更灵活的模态框
2017/04/20 Javascript
浅谈在node.js进入文件目录的问题
2018/05/13 Javascript
Angular父子组件通过服务传参的示例方法
2018/10/31 Javascript
React+TypeScript+webpack4多入口配置详解
2019/08/08 Javascript
微信小程序开发中var that =this的用法详解
2020/01/18 Javascript
解决vue 给window添加和移除resize事件遇到的坑
2020/07/21 Javascript
Vue实现鼠标经过文字显示悬浮框效果的示例代码
2020/10/14 Javascript
[40:55]Liquid vs LGD 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
有关wxpython pyqt内存占用问题分析
2014/06/09 Python
python实现将文本转换成语音的方法
2015/05/28 Python
Python的Django框架中自定义模版标签的示例
2015/07/20 Python
python的文件操作方法汇总
2017/11/10 Python
python 寻找list中最大元素对应的索引方法
2018/06/28 Python
不管你的Python报什么错,用这个模块就能正常运行
2018/09/14 Python
python pandas实现excel转为html格式的方法
2018/10/23 Python
浅谈Python 多进程默认不能共享全局变量的问题
2019/01/11 Python
Python异常处理例题整理
2019/07/07 Python
深入了解python中元类的相关知识
2019/08/29 Python
暑期社会实践感言
2014/02/25 职场文书
员工教育培训协议书
2014/09/27 职场文书
投标邀请书范本
2015/02/02 职场文书
房地产财务经理岗位职责
2015/04/08 职场文书
超级实用!五步法则,教你写好年终工作总结
2019/12/05 职场文书
PHP判断是否是json字符串
2021/04/01 PHP
Python实现老照片修复之上色小技巧
2021/10/16 Python