账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    iview组件触发的事件调用tools中方法的问题
    46
    0

    在### 问题描述
    在/src/libs/tools.js 中定义了 judgeFileType 方法
    在Upload组件的before-upload事件中调用了 judgeFileType 方法

    报错:
    Property or method "judgeFileType" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by initializing the property.

    问题出现的环境背景及自己尝试过哪些方法

    1、直接调用 judgeFileType 会报错
    2、在 judgeFileType 外层包一层 plugappBeforeUpload 函数,执行会正确运行
    3、把tools中的 judgeFileType 移到vue组件中能正常运行

    相关代码

    <Upload :before-upload="file=> judgeFileType(file,'crx')"> //报错
    <Upload :before-upload="file=> plugappBeforeUpload(file,'crx')"> //正确运行
    
    <script>
    import { judgeFileType } from 'src/libs/tools'
    
    plugappBeforeUpload (file, type) {
        return judgeFileType(file, type)
    }
    </script>

    请大佬赐教为什么会报错,有更好的处理方法嘛?

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 万象小李 普通会员 1楼

      在iview组件中触发事件并调用tools方法时,如果事件类型和tools方法的参数类型不匹配,可能会出现错误。例如,如果你的事件类型是on改变数据,而tools方法的参数类型是对象,那么调用工具方法就会失败。

      以下是一个简单的例子:

      html <view class="container"> <text @click="changeData">点击我</text> </view> methods: { changeData() { console.log('data改变'); } }

      在这个例子中,点击按钮时,控制台会输出data改变。但是,如果你尝试调用changeData方法,那么会抛出错误:

      javascript this.changeData();

      这是因为changeData方法的参数类型是对象,而tools方法的参数类型是字符串,两者不匹配。解决这个问题的方法是确保你的事件类型和tools方法的参数类型匹配。

      例如,如果你的事件类型是on改变数据,那么你可以在changeData方法中传入一个对象:

      javascript this.changeData({ name: '张三' });

      这样,无论点击哪个按钮,控制台都会输出data改变

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部