如何在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 相关文章推荐
document.compatMode介绍
May 21 Javascript
window.print打印指定div指定网页指定区域的方法
Aug 04 Javascript
JavaScript常用判断写法大全(推荐)
May 30 Javascript
mvvm双向绑定机制的原理和实现代码(推荐)
Jun 07 Javascript
js 获取范围内的随机数实例代码
Aug 02 Javascript
AngularJS基础 ng-open 指令简单实例
Aug 02 Javascript
微信小程序 swiper组件轮播图详解及实例
Nov 16 Javascript
AngularJS控制器controller给模型数据赋初始值的方法
Jan 04 Javascript
详解webpack2+node+react+babel实现热加载(hmr)
Aug 24 Javascript
微信小程序获取手机号授权用户登录功能
Nov 09 Javascript
微信小程序实现获取自己所处位置的经纬度坐标功能示例
Nov 30 Javascript
vue路由切换时取消之前的所有请求操作
Sep 01 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
用mysql触发器自动更新memcache的实现代码
2009/10/11 PHP
Linux(CentOS)下PHP扩展PDO编译安装的方法
2016/04/07 PHP
jQuery :first选择器使用介绍
2013/08/09 Javascript
JQuery操作iframe父页面与子页面的元素与方法(实例讲解)
2013/11/20 Javascript
Jquery使用小技巧汇总
2015/12/29 Javascript
JavaScript定义全局对象的方法示例
2017/01/12 Javascript
javascript中new Array()和var arr=[]用法区别
2017/12/01 Javascript
10分钟彻底搞懂Http的强制缓存和协商缓存(小结)
2018/08/30 Javascript
vue路由跳转传参数的方法
2019/05/06 Javascript
微信小程序开发之map地图组件定位并手动修改位置偏差
2019/08/17 Javascript
详解Vue.js 作用域、slot用法(单个slot、具名slot)
2019/10/15 Javascript
javascript实现简单打字游戏
2019/10/29 Javascript
Nest.js散列与加密实例详解
2021/02/24 Javascript
[02:30]DOTA2英雄基础教程 暗影恶魔
2013/12/17 DOTA
python的类变量和成员变量用法实例教程
2014/08/25 Python
详解Python中的各种函数的使用
2015/05/24 Python
Python简单实现安全开关文件的两种方式
2016/09/19 Python
利用numpy+matplotlib绘图的基本操作教程
2017/05/03 Python
python中append实例用法总结
2019/07/30 Python
Python Process多进程实现过程
2019/10/22 Python
pycharm远程连接服务器并配置python interpreter的方法
2020/12/23 Python
ONLY德国官方在线商店:购买时尚女装
2017/09/21 全球购物
女性时尚在线:IVRose
2019/02/23 全球购物
有原因的手表:Flex Watches
2019/03/23 全球购物
Nike加拿大官网:Nike.com (CA)
2019/04/09 全球购物
什么是Assembly(程序集)
2014/09/14 面试题
中专生自荐信
2013/10/12 职场文书
自荐信格式
2013/12/01 职场文书
网络专业学生个人的自我评价
2013/12/16 职场文书
技校毕业生的自我评价
2013/12/27 职场文书
幼儿教师师德师风自我评价
2015/03/05 职场文书
小区环境卫生倡议书
2015/04/29 职场文书
2015入党个人自传范文
2015/06/26 职场文书
2015暑假实习报告范文
2015/07/13 职场文书
python ansible自动化运维工具执行流程
2021/06/24 Python
Android Flutter实现3D动画效果示例详解
2022/04/07 Java/Android