满口金牙 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 对于这个复杂问题的解释说明
  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败