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 更新 JavaScript 数组的 uniq 方法
Jan 23 Javascript
利用javascript/jquery对上传文件格式过滤的方法
Jul 25 Javascript
js 多浏览器分别判断代码
Apr 01 Javascript
JS实现CheckBox复选框全选全不选功能
May 06 Javascript
JavaScript常用标签和方法总结
Sep 01 Javascript
JS中使用apply、bind实现为函数或者类传入动态个数的参数
Apr 26 Javascript
javascript判断元素存在和判断元素存在于实时的dom中的方法
Jan 17 Javascript
Vue-cli3项目配置Vue.config.js实战记录
Jul 29 Javascript
layer更改皮肤的实现方法
Sep 11 Javascript
js blob类型url的视频下载问题的解决
Nov 29 Javascript
javascript实现简单搜索功能
Mar 26 Javascript
Vue的全局过滤器和私有过滤器的实现
Apr 20 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
LotusPhp笔记之:基于ObjectUtil组件的使用分析
2013/05/06 PHP
部署PHP项目应该注意的几点事项分享
2013/12/20 PHP
在WordPress中使用wp_count_posts函数来统计文章数量
2016/01/05 PHP
PHP4和PHP5版本下解析XML文档的操作方法实例分析
2017/05/20 PHP
PHP 中魔术常量的实例详解
2017/10/26 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
用javascript实现计算两个日期的间隔天数
2007/08/14 Javascript
用JQuery 实现AJAX加载XML并解析的脚本
2009/07/25 Javascript
jQuery实现的一个tab切换效果内部还嵌有切换
2014/08/10 Javascript
javascript产生随机数方法汇总
2016/01/25 Javascript
NodeJS整合银联网关支付(DEMO)
2016/11/09 NodeJs
Android中Okhttp3实现上传多张图片同时传递参数
2017/02/18 Javascript
JavaScript基于扩展String实现替换字符串中index处字符的方法
2017/06/13 Javascript
Vue resource中的GET与POST请求的实例代码
2017/07/21 Javascript
vue select组件的使用与禁用实现代码
2018/04/10 Javascript
代码整洁之道(重构)
2018/10/25 Javascript
详解Element 指令clickoutside源码分析
2019/02/15 Javascript
详解ES6中的Map与Set集合
2019/03/22 Javascript
基于vue实现圆形菜单栏组件
2019/07/05 Javascript
判断“命令按钮”是否被鼠标单击详解
2019/07/31 Javascript
vue.js自定义组件实现v-model双向数据绑定的示例代码
2020/01/08 Javascript
windows下安装python paramiko模块的代码
2013/02/10 Python
Python多进程同步简单实现代码
2016/04/27 Python
使用DataFrame删除行和列的实例讲解
2018/04/08 Python
Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
2018/12/03 Python
Python使用post及get方式提交数据的实例
2019/01/24 Python
Python+PyQt5实现灭霸响指功能
2020/05/25 Python
html5启动原生APP总结
2020/07/03 HTML / CSS
去加拿大的旅行和假期:Canadian Affair
2016/10/25 全球购物
Yahoo-PHP面试题1
2016/07/20 面试题
人事主管岗位职责范本
2013/12/04 职场文书
2014年公司植树节活动方案
2014/03/04 职场文书
创新型城市实施方案
2014/03/06 职场文书
学风建设演讲稿
2014/09/12 职场文书
python读取并查看npz/npy文件数据以及数据显示方法
2022/04/14 Python
ipad隐藏软件app图标方法
2022/04/19 数码科技