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 中的switch表达式使用示例
Jun 03 Javascript
浅谈JS闭包中的循环绑定处理程序
Nov 09 Javascript
JQuery中使用on方法绑定hover事件实例
Dec 09 Javascript
jquery实现图片上传之前预览的方法
Jul 11 Javascript
js鼠标点击图片切换效果代码分享
Aug 26 Javascript
javascript电商网站抢购倒计时效果实现
Nov 19 Javascript
理解javascript模块化
Mar 28 Javascript
利用jsonp跨域调用百度js实现搜索框智能提示
Aug 24 Javascript
jQuery弹出层插件popShow用法示例
Jan 23 Javascript
bootstrap可编辑下拉框jquery.editable-select
Oct 12 jQuery
Vue中通过Vue.extend动态创建实例的方法
Aug 13 Javascript
微信小程序文章详情功能完整实例
Jun 03 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
ThinkPHP3.1新特性之查询条件预处理简介
2014/06/19 PHP
php遍历树的常用方法汇总
2015/06/18 PHP
PHP中递归的实现实例详解
2017/11/14 PHP
PHP实现验证码校验功能
2017/11/16 PHP
php之header的不同用法总结(实例讲解)
2017/11/28 PHP
javascript基础的动画教程,直观易懂
2007/01/10 Javascript
Javascript Tab 导航插件 (23个)
2009/06/11 Javascript
一些主流JS框架中DOMReady事件的实现小结
2011/02/12 Javascript
ie7+背景透明文字不透明超级简单的实现方法
2014/01/17 Javascript
Enter回车切换输入焦点实现思路与代码兼容各大浏览器
2014/09/01 Javascript
浅谈javascript基础之客户端事件驱动
2016/06/10 Javascript
对Js OOP编程 创建对象的一些全面理解
2016/07/26 Javascript
浅析使用BootStrap TreeView插件实现灵活配置快递模板
2016/11/28 Javascript
详解js树形控件—zTree使用总结
2016/12/28 Javascript
js学习心得_一个简单的动画库封装tween.js
2017/07/14 Javascript
vue-resource调用promise取数据方式详解
2017/07/21 Javascript
浅谈React前后端同构防止重复渲染
2018/01/05 Javascript
完美解决mui框架off-canvas侧滑超出部分隐藏无法滚动的问题
2018/01/25 Javascript
JS动态插入脚本和插入引用外部链接脚本的方法
2018/05/21 Javascript
js实现炫酷光感效果
2020/09/05 Javascript
python查找第k小元素代码分享
2013/12/18 Python
通过pycharm使用git的步骤(图文详解)
2019/06/13 Python
Python3+PyInstall+Sciter解决报错缺少dll、html等文件问题
2019/07/15 Python
Python学习笔记之列表和成员运算符及列表相关方法详解
2019/08/22 Python
pytorch动态网络以及权重共享实例
2020/01/06 Python
Python3 利用face_recognition实现人脸识别的方法
2020/03/13 Python
Python pytesseract验证码识别库用法解析
2020/06/29 Python
Django后端分离 使用element-ui文件上传方式
2020/07/12 Python
python复合条件下的字典排序
2020/12/18 Python
安全生产计划书
2014/05/04 职场文书
本科生导师推荐信范文
2014/05/18 职场文书
经济国贸专业求职信
2014/06/18 职场文书
妇女工作先进事迹
2014/08/17 职场文书
干部作风整顿自我剖析材料和整改措施
2014/09/18 职场文书
党员干部作风建设思想汇报范文
2014/10/25 职场文书
2019年大学生职业生涯规划书最新范文
2019/03/25 职场文书