满口金牙 2021-10-24 12:19 采纳率: 91.5%
浏览 24
已结题

Vue js 原代码运行正常, 模块化就报错,请指点!

这是vue原代码, 正常运行,
(main.js 有写
app.config.globalProperties.$http = axios
axios.defaults.baseURL = 'http://127.0.0.1:8000/'
)

methods: {
  async handleClear (id, sampleName) {
    let url = ''
    if (sampleName === '手机') { url = 'phone/' + id }
    if (sampleName === '电视) { url = 'tv/' + id }
    try {
      await this.$http.delete(url, {
        id: id,
        is_active: false
      })
    } catch (error) {
      alert('未知错误!!!!', error)
    }
  } 
},

*下面是拆成模块的, 运行就出错了

// 这是模块文件
function judgeUrl (id, sampleName) {
  let url = ''
  if (sampleName === '电视') { url = 'tv/' + id }
  if (sampleName === '手机') { url = 'phone/' + id }
  return url
}
export async function sampleDelet (id, sampleName) {
  const url = judgeUrl(id, sampleName)
  try {
    await this.$http.put(url, {                        //在这行出错---------------------------
      id: id,
      is_active: false
    })
  } catch (error) {
    alert('未知错误!!!!', error)
  }
}

这是vue 的 methods

import { sampleDelet }  from '.....'
methods:{
  handleDelete (id, sampleName) {
    sampleDelet(id, sampleName)  // 这行出错
  },
}
  • 写回答

1条回答 默认 最新

  • CSDN专家-showbo 2021-10-24 12:41
    关注

    模块化后执行sampleDelet时,由于没有调用的对象,所以sampleDelet中this为undefined,用bind将sampleDelet中this改为vue实例就行,

    handleDelete(id, sampleName) {
      sampleDelet.bind(this)(id, sampleName)  //bind修改 sampleDelet指向vue实例
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月1日
  • 已采纳回答 10月24日
  • 创建了问题 10月24日

悬赏问题

  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥30 自适应 LMS 算法实现 FIR 最佳维纳滤波器matlab方案
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动