如何在JS文件中获取Vue组件


Posted in Javascript onSeptember 16, 2020

1. 背景

最近在写项目时候遇到这样一个需求:

  • 我封装了一个js文件 utils.js,然后在组件 my-component.vue 中引用了该js文件。
  • utils.js 文件中有一些函数,需要操作 my-component.vue 中的 datamethods

为了方便理解,上述 js 文件和组件名非实际工程中的名字,仅是示例。

2. 思路

通过调用函数把 组件实例 this 传递到 被应用的 js 文件 里。

3. 目录结构

src/
├── App.vue
├── assets
├── main.js
├── components
└── views
  └── demo
    ├── my-component.vue
    └── utils.js

4. 代码实现

utils.js 中定义一个变量和一个函数,该变量用于存放组件实例 this,该函数用于接收组件实例 this

utils.js

// 用来存放调用此js的vue组件实例(this)
let vm = null

const sendThis = ( _this )=> {
  vm = _this
}

export default {
  sendThis, // 暴露函数
  description: '我是一个工具类方法',
  getData() {
    console.log(vm) // 打印拿到的组件实例
    console.log(vm.userProfile) // 打印组件中的data
  },
  callMethod() {
   vm.clearForm() // 调用组件中的methods
  }
}

my-component.vue 中引入 utils.js,然后在钩子函数中调用 utils.js sendThis 方法,把 this 传过去即可。

my-component.vue

<template>
 <div class="my-component"></div>
</template>

<script>
import utils from './utils'

export default {
 name: 'MyComponent',
 data() {
  return {
   userProfile: ''
  }
 },
 mounted() {
  // 发送this 到 js 文件里
  utils.sendThis(this);
 },
 methods: {
  // 这个函数会在 utils.js 文件中被调用
  clearForm() {
   // 执行一些操作
  },
  // 打印 utils.js 中的 description
  showMsg() {
   console.log(utils.description)
  }
 }
}
</script>

5. 其它思路

还有一种思路:

把一些属性和方法挂载到 vue 实例原型上,自然也就可以在某个 js 文件中拿到 vue 实例了。

以上就是如何在JS文件中获取Vue组件的详细内容,更多关于在JS文件中获取Vue组件的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
一个javascript图片阅览组件
Nov 09 Javascript
利用jQuery的deferred对象实现异步按顺序加载JS文件
Mar 17 Javascript
javascript中自定义对象的属性方法分享
Jul 12 Javascript
解决JavaScript数字精度丢失问题的方法
Dec 03 Javascript
jQuery实现只允许输入数字和小数点的方法
Mar 02 Javascript
JavaScript必知必会(六) delete in instanceof
Jun 08 Javascript
基于javascript实现按圆形排列DIV元素(一)
Dec 02 Javascript
Angularjs使用ng-repeat中$even和$odd属性的注意事项
Dec 31 Javascript
使用html+js+css 实现页面轮播图效果(实例讲解)
Sep 21 Javascript
js字符串倒序的实例代码
Nov 30 Javascript
react native 原生模块桥接的简单说明小结
Feb 26 Javascript
微信小程序绘制图片发送朋友圈
Jul 25 Javascript
javascript自定义加载loading效果
Sep 15 #Javascript
图解JS原型和原型链实现原理
Sep 15 #Javascript
vue实现简单全选和反选功能
Sep 15 #Javascript
vscode 调试 node.js的方法步骤
Sep 15 #Javascript
js实现特别简单的钟表效果
Sep 14 #Javascript
仿照Element-ui实现一个简易的$message方法
Sep 14 #Javascript
vue swipeCell滑动单元格(仿微信)的实现示例
Sep 14 #Javascript
You might like
php adodb连接不同数据库
2009/03/19 PHP
php中使用in_array() foreach array_search() 查找数组是否包含时的性能对比
2015/04/14 PHP
php微信公众号开发之二级菜单
2018/10/20 PHP
PHP使用SOAP调用API操作示例
2018/12/25 PHP
jquery实现excel导出的方法
2013/04/04 Javascript
关于JS字符串函数String.replace()
2013/04/07 Javascript
jquery图片轮播特效代码分享
2020/04/20 Javascript
Vue 2.X的状态管理vuex记录详解
2017/03/23 Javascript
Vue2单一事件管理组件通信
2017/05/09 Javascript
Ionic + Angular.js实现图片轮播的方法示例
2017/05/21 Javascript
javaScript动态添加Li元素的实例
2018/02/24 Javascript
Angular 4.x+Ionic3踩坑之Ionic3.x pop反向传值详解
2018/03/13 Javascript
JS简单生成由字母数字组合随机字符串示例
2018/05/25 Javascript
Vue实现滑动拼图验证码功能
2019/09/15 Javascript
vue2.x 通过后端接口代理,获取qq音乐api的数据示例
2019/10/30 Javascript
ES6使用新特性Proxy实现的数据绑定功能实例
2020/05/11 Javascript
[07:08]2014DOTA2西雅图国际邀请赛 小组赛7月11日TOPPLAY
2014/07/11 DOTA
举例讲解Python中is和id的用法
2015/04/03 Python
python获取本机mac地址和ip地址的方法
2015/04/29 Python
Django中URL视图函数的一些高级概念介绍
2015/07/20 Python
利用PyInstaller将python程序.py转为.exe的方法详解
2017/05/03 Python
Python查找第n个子串的技巧分享
2018/06/27 Python
python创造虚拟环境方法总结
2019/03/04 Python
pyqt实现.ui文件批量转换为对应.py文件脚本
2019/06/19 Python
python GUI库图形界面开发之PyQt5不规则窗口实现与显示GIF动画的详细方法与实例
2020/03/09 Python
使用Python制作一盏 3D 花灯喜迎元宵佳节
2021/02/26 Python
大学同学十年聚会感言
2014/02/21 职场文书
历史专业大学生职业生涯规划书
2014/03/13 职场文书
见习报告的格式
2014/10/31 职场文书
党的群众路线教育实践活动学习笔记范文
2014/11/06 职场文书
党性分析材料格式
2014/12/19 职场文书
邀请函模板
2015/02/02 职场文书
python利用pandas分析学生期末成绩实例代码
2021/07/09 Python
纯html+css实现Element loading效果
2021/08/02 HTML / CSS
Java设计模式之享元模式示例详解
2022/03/03 Java/Android
python数字图像处理实现图像的形变与缩放
2022/06/28 Python