如何在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 相关文章推荐
jQuery Mobile页面跳转后未加载外部JS原因分析及解决
Mar 18 Javascript
解析javascript 实用函数的使用详解
May 10 Javascript
node.js [superAgent] 请求使用示例
Mar 13 Javascript
javascript框架设计之类工厂
Jun 23 Javascript
Jquery 分页插件之Jquery Pagination
Aug 25 Javascript
又一枚精彩的弹幕效果jQuery实现
Jul 25 Javascript
jQuery双向列表选择器select版
Nov 01 Javascript
AngularJS模仿Form表单提交的实现代码
Dec 08 Javascript
EasyUi 打开对话框后控件赋值及赋值后不显示的问题解决办法
Jan 19 Javascript
详解基于vue-cli3.0如何构建功能完善的前端架子
Oct 09 Javascript
JavaScript eval()函数定义及使用方法详解
Jul 07 Javascript
jQuery ajax - getScript() 方法和getJSON方法
May 14 jQuery
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 和 MySQL 开发的 8 个技巧
2006/10/09 PHP
PHP常用数组函数介绍
2014/07/28 PHP
Ajax+PHP实现的模拟进度条功能示例
2019/02/11 PHP
jquery实现的让超出显示范围外的导航自动固定屏幕最顶上
2011/09/22 Javascript
JavaScript通过RegExp实现客户端验证处理程序
2013/05/07 Javascript
jquery 简单应用示例总结
2013/08/09 Javascript
浅谈JSON中stringify 函数、toJosn函数和parse函数
2015/01/26 Javascript
一个极为简单的requirejs实现方法
2016/10/20 Javascript
Angularjs 动态改变title标题(兼容ios)
2016/12/29 Javascript
Vue.js使用$.ajax和vue-resource实现OAuth的注册、登录、注销和API调用
2017/05/10 Javascript
VUE元素的隐藏和显示(v-show指令)
2017/06/23 Javascript
使用vs code开发Nodejs程序的使用方法
2017/09/21 NodeJs
vuex实现登录状态的存储,未登录状态不允许浏览的方法
2018/03/09 Javascript
Vue监听事件实现计数点击依次增加的方法
2018/09/26 Javascript
javascript 构建模块化开发过程解析
2019/09/11 Javascript
[02:28]DOTA2英雄基础教程 狼人
2013/12/23 DOTA
Python实现的远程登录windows系统功能示例
2018/06/21 Python
python中dir()与__dict__属性的区别浅析
2018/12/10 Python
Python可视化mhd格式和raw格式的医学图像并保存的方法
2019/01/24 Python
完美解决keras保存好的model不能成功加载问题
2020/06/11 Python
详解HTML5 LocalStorage 本地存储
2016/12/23 HTML / CSS
HTML5移动端开发遇见的东西
2019/10/11 HTML / CSS
JINS眼镜官方网站:日本最大的眼镜邮购
2016/10/14 全球购物
加拿大知名的国际儿童品牌:Hatley
2016/11/09 全球购物
以设计师精品品质提供快速时尚:Mostata
2019/05/10 全球购物
Python面试题集
2012/03/08 面试题
教师自我鉴定
2013/12/13 职场文书
大学生创业计划书的用途
2014/01/08 职场文书
聚美优品的广告词
2014/03/14 职场文书
简单的个人租房协议书范本
2014/11/26 职场文书
护士年终个人总结
2015/02/13 职场文书
银行自荐信范文
2015/03/25 职场文书
2015年清剿火患专项行动工作总结
2015/07/27 职场文书
装修公司管理制度
2015/08/05 职场文书
2016年学校综治宣传月活动总结
2016/03/16 职场文书
2019感恩宣传标语!
2019/07/05 职场文书