如何在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 Lightbox 图片展示插件使用说明
Apr 25 Javascript
js写一个字符串转成驼峰的实例
Jun 21 Javascript
jQuery提交多个表单的小例子
Jun 30 Javascript
让新消息在网页标题闪烁提示的jQuery代码
Nov 04 Javascript
jquery ajax的success回调函数中实现按钮置灰倒计时
Nov 19 Javascript
Node.js中创建和管理外部进程详解
Aug 16 Javascript
获取今天,昨天,本周,上周,本月,上月时间(实例分享)
Jan 04 Javascript
详解用vue编写弹出框组件
Jul 04 Javascript
vue2.0在没有dev-server.js下的本地数据配置方法
Feb 23 Javascript
一个基于react的图片裁剪组件示例
Apr 18 Javascript
深入理解 Koa 框架中间件原理
Oct 18 Javascript
openLayer4实现动态改变标注图标
Aug 17 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 include类文件超时问题处理
2015/02/06 PHP
Nigma vs Liquid BO3 第一场2.13
2021/03/10 DOTA
基于jquery实现的服务器验证控件的启用和禁用代码
2010/04/27 Javascript
JavaScript定义类或函数的几种方式小结
2011/01/09 Javascript
Jquery遍历节点的方法小集
2014/01/22 Javascript
js跳转页面方法实现汇总
2014/02/11 Javascript
IE下使用jQuery重置iframe地址时内存泄露问题解决办法
2015/02/05 Javascript
jQuery实现简单的间隔向上滚动效果
2015/03/09 Javascript
jQuery实现智能判断固定导航条或侧边栏的方法
2016/09/04 Javascript
SelecT下拉框选中和取值的解决方法
2016/11/22 Javascript
jQuery阻止移动端遮罩层后页面滚动
2017/03/15 Javascript
利用js的闭包原理做对象封装及调用方法
2017/04/07 Javascript
JS简单生成随机数(随机密码)的方法
2017/05/11 Javascript
iscroll-probe实现下拉刷新和下拉加载效果
2017/06/28 Javascript
在Js页面通过POST传递参数跳转到新页面详解
2017/08/25 Javascript
angular 实现的输入框数字千分位及保留几位小数点功能示例
2018/06/19 Javascript
小程序红包雨的实现示例
2019/02/19 Javascript
Angular实现svg和png图片下载实现
2019/05/05 Javascript
javascript实现计算器功能
2020/03/30 Javascript
vue-router之解决addRoutes使用遇到的坑
2020/07/19 Javascript
Python学习笔记之视频人脸检测识别实例教程
2019/03/06 Python
python Django的web开发实例(入门)
2019/07/31 Python
Python3 操作 MySQL 插入一条数据并返回主键 id的实例
2020/03/02 Python
Python猴子补丁Monkey Patch用法实例解析
2020/03/23 Python
python 如何上传包到pypi
2020/12/24 Python
Python字节单位转换(将字节转换为K M G T)
2021/03/02 Python
详解H5本地储存Web Storage
2017/07/03 HTML / CSS
西班牙家用电器和电子产品购物网站:Mi Electro
2019/02/25 全球购物
技校生自我鉴定范文
2013/09/26 职场文书
司机岗位职责
2013/11/15 职场文书
英语分层教学实施方案
2014/06/15 职场文书
助人为乐好少年事迹材料
2014/08/18 职场文书
2015年党支部公开承诺书
2015/01/22 职场文书
故宫英文导游词
2015/01/31 职场文书
酒店工程部的岗位职责汇总大全
2019/10/23 职场文书
WIN10使用IIS部署ftp服务器详细教程
2022/08/05 Servers