如何在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 相关文章推荐
CSS和Javascript简单复习资料
Jun 29 Javascript
基于jQuery试卷自动排版系统
Jul 18 Javascript
js判断输入是否为正整数、浮点数等数字的函数代码
Nov 17 Javascript
jquery 回车事件实现代码
Aug 23 Javascript
javascript实现动态改变层大小的方法
May 14 Javascript
JavaScript数组去重的五种方法
Nov 05 Javascript
js获取当前年月日-YYYYmmDD格式的实现代码
Jun 01 Javascript
jquery自动补齐功能插件flexselect用法示例
Aug 06 Javascript
vue.js入门教程之计算属性
Sep 01 Javascript
Javascript同时声明一连串(多个)变量的方法
Jan 23 Javascript
微信小程序之选项卡的实现方法
Sep 29 Javascript
深入解析koa之中间件流程控制
Jun 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
在数据量大(超过10万)的情况下
2007/01/15 PHP
php通过排列组合实现1到9数字相加都等于20的方法
2015/08/03 PHP
PHP排序算法之堆排序(Heap Sort)实例详解
2018/04/21 PHP
javascript学习笔记(十二) RegExp类型介绍
2012/06/20 Javascript
JavaScript事件处理器中的event参数使用介绍
2013/05/24 Javascript
如何使用jQuery Draggable和Droppable实现拖拽功能
2013/07/05 Javascript
jQuery实现的点赞随机数字显示动画效果(附在线演示与demo源码下载)
2015/12/31 Javascript
归纳下js面向对象的几种常见写法总结
2016/08/24 Javascript
用jquery快速解决IE输入框不能输入的问题
2016/10/04 Javascript
JS实现求数组起始项到终止项之和的方法【基于数组扩展函数】
2017/06/13 Javascript
详解webpack 入门总结和实践(按需异步加载,css单独打包,生成多个入口文件)
2017/06/20 Javascript
关于meta viewport中target-densitydpi属性详解(推荐)
2017/08/18 Javascript
zTree树形菜单交互选项卡效果的实现方法
2017/12/25 Javascript
vue实现裁切图片同时实现放大、缩小、旋转功能
2018/03/02 Javascript
JS获取今天是本月第几周、本月共几周、本月有多少天、是今年的第几周、是今年的第几天的示例代码
2018/12/05 Javascript
ElementUI多个子组件表单的校验管理实现
2019/11/07 Javascript
[01:58]最残酷竞争 2016国际邀请赛中国区预选赛积分循环赛回顾
2016/06/28 DOTA
python使用wmi模块获取windows下硬盘信息的方法
2015/05/15 Python
Python栈类实例分析
2015/06/15 Python
Python使用设计模式中的责任链模式与迭代器模式的示例
2016/03/02 Python
用python写扫雷游戏实例代码分享
2018/05/27 Python
Python 带星号(* 或 **)的函数参数详解
2021/02/23 Python
wedgwood加拿大官网:1759年成立的英国国宝级陶瓷餐具品牌
2018/07/17 全球购物
法国包包和行李箱销售网站:Bagage24.fr
2020/03/24 全球购物
日语专业个人的求职信
2013/12/03 职场文书
2014婚礼司仪主持词
2014/03/14 职场文书
完美的中文自荐信
2014/05/24 职场文书
视光学专业自荐信
2014/06/24 职场文书
高中生学习计划书
2014/09/15 职场文书
开展批评与自我批评发言稿
2014/10/16 职场文书
2014年城管工作总结
2014/11/20 职场文书
大学生个人年度总结范文
2015/02/15 职场文书
2015年新教师个人工作总结
2015/10/14 职场文书
用javascript制作qq注册动态页面
2021/04/14 Javascript
MySQL系列之六 用户与授权
2021/07/02 MySQL
vue项目中的支付功能实现(微信支付和支付宝支付)
2022/02/18 Vue.js