- A+
所属分类:Web前端
1. 前言
唉,好想玩滋嘣。
2. 计算属性直接传参接收不到
表格数据某一列需要用的计算属性时,模板中使用计算属性 fullName
就会直接调用 fullName
函数,而在模板中 fullName(item)
相当于fullName()(item)
,此处为函数柯里化。
<el-table-column label="名称" align="center" min-width="20%"> <template slot-scope="scope"> <p v-for="(item, index) in scope.row.dataList " :key="item.id" > {{ fullName(item) }} </p> </template> </el-table-column>
// ... computed: { // fullName(param) 里接收到的是组件实例对象! fullName() { return item=> { return item.firstName + item.lastName } } }
3. 第三方组件的事件想要传参会立即执行且会被覆盖问题
封装好的组件的事件回调函数想要传其它参数,事件的回调直接写:before-upload="beforeUpload('a')"
,不仅会立即执行,还会覆盖默认参数;解决的方式类似:
<el-form-item label="文件:"> <el-upload :action="" :before-upload="beforeUpload('a')" :file-list="fileList" > <el-button size="small" type="primary">点击上传</el-button> </el-upload> </el-form-item>
// ... // 上传文件前 beforeUpload(myParams) { return file => { console.log(file, myParams); }; },
:before-upload="beforeUpload('a')"
,引号内为事件的回调,应该是一个函数,而不是函数的执行,但这里我们执行beforeUpload
接收想要传递的参数,并直接返回一个函数,作为新的事件回调,沿着作用域链就可以拿到myParams
啦。