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 相关文章推荐
通过Mootools 1.2来操纵HTML DOM元素
Sep 15 Javascript
淘宝搜索框效果实现分析
Mar 05 Javascript
JavaScript取得键盘按下方向键是哪个的方法
Aug 04 Javascript
js中利用tagname和id获取元素的方法
Jan 03 Javascript
JS字符串的切分用法实例
Feb 22 Javascript
深入学习js瀑布流布局
Oct 14 Javascript
Vue.js创建Calendar日历效果
Nov 03 Javascript
有关suggest快速删除后仍然出现下拉列表的bug问题
Dec 02 Javascript
jquery实现弹窗功能(窗口居中显示)
Feb 27 Javascript
JavaScript页面倒计时功能完整示例
May 15 Javascript
jQuery实现checkbox全选、反选及删除等操作的方法详解
Aug 02 jQuery
小程序卡片切换效果组件wxCardSwiper的实现
Feb 13 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/12/04 PHP
php实现网页端验证码功能
2017/07/11 PHP
Nginx实现反向代理
2017/09/20 Servers
Laravel框架基于ajax实现二级联动功能示例
2019/01/17 PHP
php使用curl模拟多线程实现批处理功能示例
2019/07/25 PHP
PHP项目多语言配置平台实现过程解析
2020/05/18 PHP
js Function类型
2011/12/04 Javascript
js 获取(接收)地址栏参数值的方法
2013/04/01 Javascript
JS下载文件|无刷新下载文件示例代码
2014/04/17 Javascript
jquery判断元素是否隐藏的多种方法
2014/05/06 Javascript
JavaScript设计模式之单例模式实例
2014/09/24 Javascript
纯javascript实现图片延时加载方法
2015/08/21 Javascript
使用JQuery在线制作ppt并在线演示源码特效
2015/09/08 Javascript
jquery验证手机号是否正确实例讲解
2015/11/17 Javascript
基于javascript实现图片切换效果
2016/04/17 Javascript
Javascript小技能总结(推荐)
2016/06/02 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
2016/07/14 Javascript
JS实现div模块的截图并下载功能
2017/10/17 Javascript
javaScript中的空值和假值
2017/12/18 Javascript
ionic3实战教程之随机布局瀑布流的实现方法
2017/12/28 Javascript
JS实现键值对遍历json数组功能示例
2018/05/30 Javascript
vue.js配合$.post从后台获取数据简单demo分享
2018/08/11 Javascript
详解ng-alain动态表单SF表单项设置必填和正则校验
2019/06/11 Javascript
深入浅析Vue中mixin和extend的区别和使用场景
2019/08/01 Javascript
python解析文件示例
2014/01/23 Python
pytorch方法测试详解——归一化(BatchNorm2d)
2020/01/15 Python
Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
2020/04/08 Python
带你认识HTML5中的WebSocket
2015/05/22 HTML / CSS
Douglas意大利官网:购买香水和化妆品
2020/05/27 全球购物
ORACLE十问
2015/04/20 面试题
初二政治教学反思
2014/01/12 职场文书
运动会800米加油稿
2014/02/22 职场文书
打架检讨书范文
2015/01/27 职场文书
师范生小学见习总结
2015/06/23 职场文书
聊聊JS ES6中的解构
2021/04/29 Javascript
mysql insert 存在即不插入语法说明
2022/03/25 MySQL