如何在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 call方法使用说明
Jan 11 Javascript
JSON传递bool类型数据的处理方式介绍
Sep 18 Javascript
js获取客户端网卡的IP地址、MAC地址
Mar 26 Javascript
JQuery工具函数汇总
Jun 15 Javascript
ECharts仪表盘实例代码(附源码下载)
Feb 18 Javascript
JavaScript绑定事件监听函数的通用方法
May 14 Javascript
js模块加载方式浅析
Aug 12 Javascript
微信小程序获取循环元素id以及wx.login登录操作
Aug 17 Javascript
vue解决跨域路由冲突问题思路解析
Nov 03 Javascript
Vue项目使用CDN优化首屏加载问题
Apr 01 Javascript
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
Sep 05 Javascript
vue与iframe之间的信息交互的实现
Apr 08 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学习笔记 面向对象中[接口]与[多态性]的应用
2011/06/16 PHP
php实现获取农历(阴历)、节日、节气的类与用法示例
2017/11/20 PHP
Extjs ajax同步请求时post方式参数发送方式
2009/08/05 Javascript
JQUERY 浏览器判断实现函数
2009/08/20 Javascript
自写的一个jQuery圆角插件
2010/10/26 Javascript
JQuery中的$.getJSON 使用说明
2011/03/10 Javascript
读jQuery之三(构建选择器)
2011/06/11 Javascript
仅IE支持clearAttributes/mergeAttributes方法使用介绍
2012/05/04 Javascript
javascript面向对象包装类Class封装类库剖析
2013/01/24 Javascript
jQuery Masonry瀑布流插件使用详解
2014/11/17 Javascript
使表格的标题列可左右拉伸jquery插件封装
2014/11/24 Javascript
js如何实现淡入淡出效果
2020/11/18 Javascript
javascript实现dom元素可拖动
2016/03/21 Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
2016/06/24 Javascript
详解VueJS 数据驱动和依赖追踪分析
2017/07/26 Javascript
温故知新——JavaScript中的字符串连接问题最全总结(推荐)
2017/08/21 Javascript
用Vue编写抽象组件的方法
2019/05/06 Javascript
vue-路由精讲 二级路由和三级路由的作用
2020/08/06 Javascript
vue中的循环对象属性和属性值用法
2020/09/04 Javascript
Python实现简单截取中文字符串的方法
2015/06/15 Python
Python实现二维有序数组查找的方法
2016/04/27 Python
深入理解NumPy简明教程---数组1
2016/12/17 Python
python 字典 按key值大小 倒序取值的实例
2018/07/06 Python
在python里面运用多继承方法详解
2019/07/01 Python
使用python爬取抖音视频列表信息
2019/07/15 Python
pytorch sampler对数据进行采样的实现
2019/12/31 Python
Python Request类源码实现方法及原理解析
2020/08/17 Python
Hudson Jeans官网:高级精制牛仔裤
2018/11/28 全球购物
澳大利亚购买最佳炊具品牌网站:Cookware Brands
2019/02/16 全球购物
机电一体化专业应届生求职信
2013/11/27 职场文书
运动会入场解说词300字
2014/01/25 职场文书
小学生评语集锦
2014/04/18 职场文书
见习期个人总结
2015/03/05 职场文书
世界名著读书笔记
2015/06/25 职场文书
python基于turtle绘制几何图形
2021/06/15 Python
Win11 22H2 2022怎么更新? 获得Win1122H22022版本升级技巧
2022/09/23 数码科技