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了。

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

相关文章
|
10月前
|
编解码 JavaScript 前端开发
如何在网页播放英文的m3u8文件(基于Javascript搭建的在线网页工具)
什么是m3u8?又该如何在网页中高效、便捷地播放英文的m3u8文件呢?今天这篇文章就带你一起了解,并推荐一种基于Javascript搭建的在线网页工具,让你轻松解决播放问题。
3033 0
|
存储 JavaScript 前端开发
如何高效实现 vue 文件批量下载及相关操作技巧
在Vue项目中,实现文件批量下载是常见需求。例如文档管理系统或图片库应用中,用户可能需要一次性下载多个文件。本文介绍了三种技术方案:1) 使用`file-saver`和`jszip`插件在前端打包文件为ZIP并下载;2) 借助后端接口完成文件压缩与传输;3) 使用`StreamSaver`解决大文件下载问题。同时,通过在线教育平台的实例详细说明了前后端的具体实现步骤,帮助开发者根据项目需求选择合适方案。
1057 0
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
676 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
JavaScript 前端开发 API
Next.js 实战 (六):如何实现文件本地上传
这篇文章介绍了在Next.js中如何实现文件上传到本地的方法。文章首先提到Next.js官方文档中没有提供文件上传的实例代码,因此开发者需要自行实现,通常有两种思路:使用Node.js原生上传或使用第三方插件如multer。接着,文章选择了使用Node.js原生上传的方式来讲解实现过程,包括如何通过哈希值命名文件、上传到指定目录以及如何分类文件夹。然后,文章展示了具体的实现步骤,包括编写代码来处理文件上传,并给出了代码示例。最后,文章通过一个效果演示说明了如何通过postman模拟上传文件,并展示了上传后的文件夹结构。
508 0
Next.js 实战 (六):如何实现文件本地上传
|
JavaScript 前端开发 持续交付
构建现代Web应用:Vue.js与Node.js的完美结合
【10月更文挑战第22天】随着互联网技术的快速发展,Web应用已经成为了人们日常生活和工作的重要组成部分。前端技术和后端技术的不断创新,为Web应用的构建提供了更多可能。在本篇文章中,我们将探讨Vue.js和Node.js这两大热门技术如何完美结合,构建现代Web应用。
1193 4
|
JavaScript 前端开发 开发者
JavaScript框架React vs. Vue:一场性能与易用性的较量
JavaScript框架React vs. Vue:一场性能与易用性的较量
459 0
|
JavaScript 前端开发 应用服务中间件
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
992 0
|
JavaScript
深入解析:JS与Vue中事件委托(事件代理)的高效实现方法
深入解析:JS与Vue中事件委托(事件代理)的高效实现方法
537 0
|
9月前
|
JavaScript
Vue中如何实现兄弟组件之间的通信
在Vue中,兄弟组件可通过父组件中转、事件总线、Vuex/Pinia或provide/inject实现通信。小型项目推荐父组件中转或事件总线,大型项目建议使用Pinia等状态管理工具,确保数据流清晰可控,避免内存泄漏。
757 2