如何在函数的默认传参之外额外传入自定义参数

场景

在使用一些框架如element-ui时,经常会使用一些组件的默认事件,这些默认事件通常会有一些默认参数以便于使用。
例如:
远程搜索功能的自动补全输入框


它经常会被这样使用:


            
            

其中的handleselect函数有默认回调参数“选中建议项”,而querySearch函数有两个默认回调(queryString,cb)
正常使用时html中可不传入这两个参数,js中直接使用。即:

@select="handleSelect"

handleSelect(item) {
	console.log(item)
}

而有时,el-autocomplete是通过如v-for等方式渲染出来的、有多个并列输入框时,我们就想知道,所查询的或点击的是哪一个,也即传入自定义参数index。

在这种情况下,像下面这么写肯定是不行的:

@select="handleSelect(index)"
@select="handleSelect(index,item)"

因为这样index和item都会被当成自定义参数,从而在函数中无法使用默认的回调参数。

解决办法:

方法一:

@select="handleSelect(index,$event)"


此处的index为自定义参数,item为原默认回调参数,可正常使用。

但是,如果默认回调参数(也即fetch-suggestions)有两个咋办呢?请看方法二。

方法二:

使用闭包:

:fetch-suggestions="((queryString,cb)=>{queryUnit(queryString,cb,index)})"


此时,两个默认回调(queryString,cb)就可以正常使用了,自定义传参的数量也没有限制了~

你可能感兴趣的:(学习随笔,vue)