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的前端数据通用验证库
Aug 08 Javascript
jQuery结合CSS制作漂亮的select下拉菜单
May 03 Javascript
原生JS封装ajax 传json,str,excel文件上传提交表单(推荐)
Jun 21 Javascript
在Docker快速部署Node.js应用的详细步骤
Sep 02 Javascript
Bootstrap导航简单实现代码
Mar 06 Javascript
JavaScript实现隐藏省略文字效果的方法
Apr 27 Javascript
windows下更新npm和node的方法
Nov 30 Javascript
详解ES6 Fetch API HTTP请求实用指南
Nov 14 Javascript
babel7.x和webpack4.x配置vue项目的方法步骤
May 12 Javascript
JS正则表达式验证端口范围(0-65535)
Jan 06 Javascript
js实现踩五彩块游戏
Feb 08 Javascript
基于element-ui封装可搜索的懒加载tree组件的实现
May 22 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开发需要注意的安全问题
2010/09/01 PHP
php连接数据库代码应用分析
2011/05/29 PHP
解析php session_set_save_handler 函数的用法(mysql)
2013/06/29 PHP
php上传文件,创建递归目录的实例代码
2013/10/18 PHP
php实现通过cookie换肤的方法
2015/07/13 PHP
php微信公众平台开发(四)回复功能开发
2016/12/06 PHP
PHP笛卡尔积实现算法示例
2018/07/30 PHP
php如何利用pecl安装mongodb扩展详解
2019/01/09 PHP
PHP实现简单注册登录系统
2020/12/28 PHP
Javascript基础教程之argument 详解
2015/01/18 Javascript
学习javascript面向对象 javascript实现继承的方式
2016/01/04 Javascript
JavaScript SHA1加密算法实现详细代码
2016/10/06 Javascript
原生javascript实现读写CSS样式的方法详解
2017/02/20 Javascript
微信小程序-横向滑动scroll-view隐藏滚动条
2017/04/20 Javascript
javascript中神奇的 Date对象小结
2017/10/12 Javascript
javascript按钮禁用和启用的效果实例代码
2017/10/29 Javascript
浅谈PDF.js使用心得
2018/06/07 Javascript
AngularJS 事件发布机制
2018/08/28 Javascript
详解在HTTPS 项目中使用百度地图 API
2019/04/26 Javascript
手动实现把python项目发布为exe可执行程序过程分享
2014/10/23 Python
Python获取本机所有网卡ip,掩码和广播地址实例代码
2018/01/22 Python
Python 中的lambda函数介绍
2018/10/10 Python
python实现在cmd窗口显示彩色文字
2019/06/24 Python
Windows系统Python直接调用C++ DLL的方法
2019/08/01 Python
Tensorflow的常用矩阵生成方式
2020/01/04 Python
Django 自定义404 500等错误页面的实现
2020/03/08 Python
Python txt文件常用读写操作代码实例
2020/08/03 Python
python两种注释用法的示例
2020/10/09 Python
仓库文员岗位职责
2014/04/06 职场文书
十佳少先队员演讲稿
2014/09/12 职场文书
合作经营协议书范本
2014/09/16 职场文书
2014卖家双十一活动策划书
2014/09/29 职场文书
《曹冲称象》教学反思
2016/02/20 职场文书
Django使用channels + websocket打造在线聊天室
2021/05/20 Python
OpenCV实现反阈值二值化
2021/11/17 Java/Android
Springboot-cli 开发脚手架,权限认证,附demo演示
2022/04/28 Java/Android