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 &amp; DHTML 实例编程(教程)DOM基础和基本API
Jun 02 Javascript
JavaScript随机排序(随即出牌)
Sep 17 Javascript
在jQuery中 关于json空对象筛选替换
Apr 15 Javascript
无缝滚动js代码通俗易懂(自写)
Jun 19 Javascript
jQuery如何实现点击页面获得当前点击元素的id或其他信息
Jan 09 Javascript
详解JavaScript中setSeconds()方法的使用
Jun 11 Javascript
解决vue 路由变化页面数据不刷新的问题
Mar 13 Javascript
Vue条件循环判断+计算属性+绑定样式v-bind的实例
Sep 18 Javascript
layui表格内容溢出的解决方法
Sep 06 Javascript
node.JS事件机制与events事件模块的使用方法详解
Feb 06 Javascript
通过js实现压缩图片上传功能
Feb 25 Javascript
js+for循环实现字符串自动转义的代码(把后面的字符替换前面的字符)
Dec 24 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 设计模式之 工厂模式
2008/12/19 PHP
PHP简单实现“相关文章推荐”功能的方法
2014/07/19 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
2018/02/07 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
2019/04/09 PHP
Javascript new Date().valueOf()的作用与时间戳由来详解
2013/04/24 Javascript
不使用浏览器运行javascript代码的方法
2013/07/24 Javascript
JavaScript数组前面插入元素的方法
2015/04/06 Javascript
jQuery中dom元素上绑定的事件详解
2015/04/24 Javascript
JavaScript中var关键字的使用详解
2015/08/14 Javascript
JavaScript添加随滚动条滚动窗体的方法
2016/02/23 Javascript
jquery获取img的src值的简单实例
2016/05/17 Javascript
js实现可控制左右方向的无缝滚动效果
2016/05/29 Javascript
js中 计算两个日期间的工作日的简单实例
2016/08/08 Javascript
jQuery利用sort对DOM元素进行排序操作
2016/11/07 Javascript
jQuery EasyUI 为Combo,Combobox添加清除值功能的实例
2017/04/13 jQuery
jQuery Layer弹出层传值到父页面的实现代码
2017/08/17 jQuery
微信小程序中的canvas 文字断行和省略号显示功能的处理方法
2018/11/14 Javascript
javascript json字符串到json对象转义问题
2019/01/22 Javascript
JavaScript递归函数定义与用法实例分析
2019/01/24 Javascript
Layui给switch添加响应事件的例子
2019/09/03 Javascript
Node.js实现批量下载图片简单操作示例
2020/01/18 Javascript
微信小程序button标签open-type属性原理解析
2020/01/21 Javascript
js实现经典贪吃蛇小游戏
2020/03/19 Javascript
JS实现页面鼠标点击出现图片特效
2020/08/19 Javascript
Python操作redis和mongoDB的方法
2019/12/19 Python
Python二元算术运算常用方法解析
2020/09/15 Python
意大利在线大学图书馆:Libreria universitaria
2019/07/16 全球购物
编程用JAVA解析XML的方式
2013/07/07 面试题
应用电子技术专业个人求职信
2013/09/21 职场文书
毕业生求职推荐信
2013/11/04 职场文书
试用期员工考核制度
2014/01/22 职场文书
小学教师暑期培训方案
2014/08/28 职场文书
党员学习党的群众路线思想汇报(5篇)
2014/09/10 职场文书
股份转让协议书范本
2015/01/27 职场文书
五星级酒店前台接待岗位职责
2015/04/02 职场文书
CAD实训总结范文
2015/08/03 职场文书