vue:.js 文件获取到 .vue 文件中的 this

简介: vue:.js 文件获取到 .vue 文件中的 this

一、背景

在js文件 abc.js   获取到   abc.vue   的this

作用:abc.js如果要使用 axios 等场景,这个时候需要使用到 this。

二、sendThis 方法实现

2.1、abc.js定义 sendThis 方法

let vm = null
export const sendThis = ( _this )=> {
    vm = _this;
};

2.2、abc.vue 在created() 声明周期 传递 this

2.2.1、引入sendThis方法

import { sendThis } from '@/const/abc.js'

2.2.2、created() 生命周期传递this

created() {
    sendThis(this)
}

2.3、在abc.js中使用

export const form = [
  {
    key: 'name',
    title: '请输入名字',
    type: 'select',
    options: [],
    value: '',
    attr: {
      placeholder: '请输入名字',
      filterable: true,
      remote: true,
      'remote-method': (query) => {
        const cur = vm.form.find((item) => item.key === 'name');
        vm.$axios({
          method: 'post',
          url: url,
          data: {
            name: query,
          },
        })
          .then((res) => {})
        }
    }
]

经过测试,成功。

三、abc.vue 赋值给对应的属性

3.1、abc.js

export const form = [
  {
    key: 'name',
    title: '请输入名字',
    type: 'select',
    options: [],
    value: '',
    attr: {
      placeholder: '请输入名字',
      filterable: true,
      remote: true,
      'remote-method': ''
    }
]

3.2、abc.vue 引入 form

import { form } from '@/const/abc.js'

3.3、赋值

created() {
    this.form[0].attr['remote-method'] = this.remoteMethod;
},
method: {
    remoteMethod(){
        // do something
    }
}

经过测试成功。

四、.call() 方法

4.1、abc.js

export const form = () => [
  {
    key: 'name',
    title: '请输入名字',
    type: 'select',
    options: [],
    value: '',
    attr: {
      placeholder: '请输入名字',
      filterable: true,
      remote: true,
      'remote-method': (query) => {
        const cur = vm.form.find((item) => item.key === 'name');
        vm.$axios({
          method: 'post',
          url: url,
          data: {
            name: query,
          },
        })
          .then((res) => {})
        }
    }
]

4.2、abc.vue 引入 form

import { form } from '@/const/abc.js'

4.3、 调用call方法

data(vm){
    return {
        formData: this.form.call(vm, vm)
    }
}

这时候我们把this传递了过去,配置文件中可以使用this了。

五、欢迎交流指正,关注我,一起学习。

相关文章
|
2月前
|
JavaScript 前端开发 开发者
VUE 开发——Node.js学习(一)
VUE 开发——Node.js学习(一)
91 3
|
2月前
|
JavaScript 前端开发 内存技术
js文件的入口代码及需要入口代码的原因
js文件的入口代码及需要入口代码的原因
47 0
|
1月前
|
JavaScript 前端开发 持续交付
构建现代Web应用:Vue.js与Node.js的完美结合
【10月更文挑战第22天】随着互联网技术的快速发展,Web应用已经成为了人们日常生活和工作的重要组成部分。前端技术和后端技术的不断创新,为Web应用的构建提供了更多可能。在本篇文章中,我们将探讨Vue.js和Node.js这两大热门技术如何完美结合,构建现代Web应用。
41 4
|
1月前
|
JavaScript 前端开发 开发者
JavaScript框架React vs. Vue:一场性能与易用性的较量
JavaScript框架React vs. Vue:一场性能与易用性的较量
37 0
|
3月前
|
JavaScript 前端开发 API
Vue学习笔记3:对比纯JavaScript和Vue实现数据更新的实时视图显示
Vue学习笔记3:对比纯JavaScript和Vue实现数据更新的实时视图显示
|
2月前
|
JavaScript 前端开发 应用服务中间件
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
195 0
|
2月前
|
JavaScript
深入解析:JS与Vue中事件委托(事件代理)的高效实现方法
深入解析:JS与Vue中事件委托(事件代理)的高效实现方法
58 0
|
2月前
|
JavaScript 前端开发
前端js,vue系统使用iframe嵌入第三方系统的父子系统的通信
前端js,vue系统使用iframe嵌入第三方系统的父子系统的通信
|
2月前
|
JSON 缓存 JavaScript
vue尚品汇商城项目-day01【1.vue-cli脚手架初始化项目生成文件的介绍】
vue尚品汇商城项目-day01【1.vue-cli脚手架初始化项目生成文件的介绍】
34 0