使用iview文件上传的钩子函数时传递自定义参数问题

最近在改造项目的文件上传框架的时候,使用了iview的文件上传功能。

iview文件上传感觉还是很好用的,使用起来也比较灵活,官方提供了很多的钩子函数让我们来使用

文档中只是说了这些方法有哪些参数,但是项目中发现有时候的确必须传递一些自定义的参数。

官方文档中我并未看到解决办法(可能是没找到吧)

在网友给的解决方案中,看到了使用es6的箭头函数能解决这个问题,下边是以on-error为例,代码如下:

其中error,file,fileList这三个是iview官方给的参数,后边我自己加了个字符串作为自定义参数(error,file,fileList这些名称无所谓,顺序要按官方文档来,如果你只要一个error,可以只写一个error)

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>iview example</title>
    <link rel="stylesheet" type="text/css" href="http://unpkg.com/iview/dist/styles/iview.css">
    <script type="text/javascript" src="http://vuejs.org/js/vue.min.js"></script>
    <script type="text/javascript" src="http://unpkg.com/iview/dist/iview.min.js"></script>
</head>
<body>
<div id="app">
    <upload :on-error="(error, file, fileList)=> test1(error, file, fileList,'test')">
        <i-button icon="ios-cloud-upload-outline">上传文件</i-button>
    </upload>
</div>
<script>
    window.app = new Vue({
        el: '#app',
        methods: {
            test1: function(error, file, fileList,mydata){
             debugger
            }
        }
    })
  </script>
</body>
</html>

这样就顺利的接收到了自定义参数和官网提供的参数,如下图:上边是自定义的,下边是iview提供的参数。

 

如果需要兼容低版本浏览器不能识别es6的问题,可以将es6的写法替换成旧版写法。效果是一样的,如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>iview example</title>
    <link rel="stylesheet" type="text/css" href="http://unpkg.com/iview/dist/styles/iview.css">
    <script type="text/javascript" src="http://vuejs.org/js/vue.min.js"></script>
    <script type="text/javascript" src="http://unpkg.com/iview/dist/iview.min.js"></script>
</head>
<body>
<div id="app">
    <upload :on-error="(function(error,file,fileList){return test1(error,file,fileList,'test')})">
        <i-button icon="ios-cloud-upload-outline">上传文件</i-button>
    </upload>
</div>
<script>
    window.app = new Vue({
        el: '#app',
        methods: {
            test1: function(error, file, fileList,mydata){
                debugger
            }
        }
    })
  </script>
</body>
</html>

  

原文地址:https://www.cnblogs.com/mayiaction/p/11944695.html