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函数般调用正则
Apr 08 Javascript
javascript 面向对象编程 聊聊对象的事
Sep 17 Javascript
jQuery EasyUI tree 使用拖拽时遇到的错误小结
Oct 10 Javascript
快速掌握jQuery插件WebUploader文件上传
Nov 07 Javascript
基于daterangepicker日历插件使用参数注意的问题
Aug 10 Javascript
浅谈 vue 中的 watcher
Dec 04 Javascript
详解React开发必不可少的eslint配置
Feb 05 Javascript
Vue+Typescript中在Vue上挂载axios使用时报错问题
Aug 07 Javascript
Bootstrap实现模态框效果
Sep 30 Javascript
小程序实现日历左右滑动效果
Oct 21 Javascript
ant design charts 获取后端接口数据展示
May 25 Javascript
TS 类型兼容教程示例详解
Sep 23 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静态变量当缓存的方法
2013/11/13 PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
2019/04/16 PHP
php的单例模式及应用场景详解
2021/02/27 PHP
javascript基础第一章 JavaScript与用户端
2010/07/22 Javascript
Textbox控件注册回车事件及触发按钮提交事件具体实现
2013/03/04 Javascript
基于JavaScript实现继承机制之构造函数方法对象冒充的使用详解
2013/05/07 Javascript
JQuery异步加载无限下拉框级联功能实现示例
2014/02/19 Javascript
javascript实现的HashMap类代码
2014/06/27 Javascript
JavaScript设计模式之工厂模式和构造器模式
2015/02/11 Javascript
Vue.js第二天学习笔记(vue-router)
2016/12/01 Javascript
Bootstrap表单控件使用方法详解
2017/01/11 Javascript
Canvas + JavaScript 制作图片粒子效果
2017/02/08 Javascript
JavaScript实现简单精致的图片左右无缝滚动效果
2017/03/16 Javascript
vue2实现移动端上传、预览、压缩图片解决拍照旋转问题
2017/04/13 Javascript
深入理解vue $refs的基本用法
2017/07/13 Javascript
Vue 中对图片地址进行拼接的方法
2018/09/03 Javascript
浅谈ECMAScript 中的Array类型
2019/06/10 Javascript
bootstrapValidator表单校验、更改状态、新增、移除校验字段的实例代码
2020/05/19 Javascript
react项目从新建到部署的实现示例
2021/02/19 Javascript
[02:08]什么藏在DOTA2 TI9“小紫本”里?斧王历险记告诉你!
2019/05/17 DOTA
VSCode下好用的Python插件及配置
2018/04/06 Python
Python排序算法之选择排序定义与用法示例
2018/04/29 Python
python中seaborn包常用图形使用详解
2019/11/25 Python
使用Python 自动生成 Word 文档的教程
2020/02/13 Python
Python爬虫工具requests-html使用解析
2020/04/29 Python
Flask中jinja2的继承实现方法及实例
2021/03/03 Python
编写函数,将一个3*3矩阵转置
2013/10/09 面试题
应用电子技术专业个人求职信
2013/09/21 职场文书
厨师岗位职责
2013/11/12 职场文书
十八大报告观后感
2014/01/28 职场文书
第一批党的群众路线教育实践活动工作总结
2014/03/03 职场文书
体育课课后反思
2014/04/24 职场文书
珍惜时间演讲稿
2014/05/14 职场文书
校本培训个人总结
2015/02/28 职场文书
golang 实现Location跳转方式
2021/05/02 Golang
LeetCode189轮转数组python示例
2022/08/05 Python