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

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

实例:

文件结构

 

在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

 

posted @ 2019-04-24 23:28  暗恋桃埖源  阅读(16622)  评论(4编辑  收藏  举报