在被vue组件引用的 js 文件里获取组件实例this

时间:2023-03-09 04:46:27
在被vue组件引用的 js 文件里获取组件实例this

思路: 通过调用函数 把 组件实例this  传递 到 被应用的 js文件里

实例:

文件结构

在被vue组件引用的 js 文件里获取组件实例this

在SendThis.vue 文件中引用 了modalConfig.js

    import modalConfig from './modalConfig'

我们只要在 modalConfig.js文件里定义个函数和一个变量(用来存this)即可

//用来获取 调用此 js的vue 组件 实例 (this)
let vm = null; const sendThis = ( _this )=> {
vm = _this;
}; export default {
sendThis, //暴露函数 drawer: { //这里是测试代码, 假设这里会有其他暴露的变量
columns: [
{
title: 'Name',
key: 'name'
},
{
title: 'Age',
key: 'age'
},
{
title: 'Address',
key: 'address'
},
{
title: '操作',
render: (h, params)=>{
return h('a',{
on: {
click: ()=>{ /*如果这里要使用 sendThis 实例 this*/ // this.handleShowDrawer();
// console.log(vm); //可以拿到组件 实例 了
vm.handleShowDrawer(); //调用组件实例中的函数 }
}
}, '抽屉');
}
}
]
}, }

在 SendThis.vue 问中定义的handleShowDrawer函数

        methods: {
//这个函数会在 modalConfig.js 文件中触发
handleShowDrawer(){
this.showDrawer = true;
}, //把 modalConfig.js的 drawer.columns 赋值 给 this.columns1
handleTableColumn(){
let { columns } = modalConfig.drawer;
this.columns1 = columns;
}
},

下面我们只要在钩子函数中 调用 modalConfig.js 的 sendThis 方法, 把this传过去即可了

        mounted() {
//发送this 到 js 文件里
modalConfig.sendThis(this);
}

此时:  modalConfig.js  中 的 vm 就是 SendThis.vue 文件中的 this了。

---------------------------------------

还用一种方法是你把 一些属性和方法挂在到 vue实例原型上了, 可以在 某个js文件中这样拿到vue 实例。

详见 ---》 https://www.cnblogs.com/taohuaya/p/10296420.html