51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

ElementUI 下拉菜单 Dropdown 点击事件 command 增加额外参数

我们在用 ElementUI 开发前端时,有时我们需要使用到组件 Dropdown 下拉菜单,比如在组件 Table 表格 的操作列中操作按钮较多的情况下,可以通过 Dropdown 来展示更多操作按钮。然而其点击菜单项触发的事件回调 command 只有一个参数,但是我们至少还需要传入行数据来区分是操作哪一行的数据,这时只能通过变通给 dropdown-menu 的属性 command 传入对象,将需要的字段都放入该对象,具体代码如下:

<el-table>
  <el-table-column label="操作" align="center" fixed="right">
    <template slot-scope="scope">
      <el-button type="text" size="small">详情</el-button>
      <el-button type="text" size="small">编辑</el-button>
      <el-dropdown @command="handleCommand">
        <el-button type="text" size="small">
          更多操作<i class="el-icon-arrow-down el-icon--right" />
        </el-button>
        <el-dropdown-menu slot="dropdown">
          <el-dropdown-item
            v-for="(item, index) in opBtns"
            :key="index"
            :command="{ command: item.value, fn: item.fn, row: scope.row }"
            :disabled="item.disabled"
            :divided="item.divided">{{ item.text }}</el-dropdown-item>
        </el-dropdown-menu>
      </el-dropdown>
    </template>
  </el-table-column>
</el-table>
`<script>
export default {
data() {
return {
opBtns: [
{
value: 'v1',
text: '操作1',
fn: 'fn1'
},
{
value: 'v2',
text: '操作2',
fn: 'fn2'
},
{
value: 'v3',
text: '操作3',
disabled: true
},
{
value: 'v4',
text: '操作4',
fn: 'fn4',
divided: true
},
{
value: 'v5',
text: '操作5',
fn: 'fn5'
}
]
}
},
methods: {
handleCommand(commandObj) { // 点击菜单项触发的事件回调
const { command, fn, row } = commandObj
if (fn) {
const method = this.$options.methods[fn] // 获取对应操作函数
method && method.call(this, row) // 执行对应的操作函数
}
},
fn1(item) {
console.info(item, 'fn1')
},
fn2(item) {
console.info(item, 'fn2')
}
}
}
</script>`


为了方便,我们把 Dropdown 中的按钮操作处理函数也通过变量传递。


知识点:

  • this.$options.methods:获取当前组件下 method 内的所有函数。
  • this.$options.methods.call(this, row):调用获取到的函数,并重新指定 this 指向。

最终效果图:

赞(0)
未经允许不得转载:工具盒子 » ElementUI 下拉菜单 Dropdown 点击事件 command 增加额外参数