问题1:iView组件Dropdown点击事件禁用无效
之前同事的实现方式:
<Dropdown :transfer="true" transfer-class-name="more">
<a href="javascript:void(0)">
更多
<Icon type="ios-arrow-down"></Icon>
</a>
<DropdownMenu slot="list">
<DropdownItem :disabled="row.userType == 1">
<span class="slot_btn" @click="bind(index, row)">角色绑定</span>
</DropdownItem>
<DropdownItem>
<span class="slot_btn" @click="pwdReset(index, row)">密码重置</span>
</DropdownItem>
</DropdownMenu>
</Dropdown>
没有按照官网给的书写方式实现禁用效果,导致样式是有了,但是禁用效果没有用,依旧能够点击禁用的子菜单。
【Dropdown官网链接:http://v4.iviewui.com/components/dropdown】
修改之后的样子:
<Dropdown :transfer="true" transfer-class-name="more" @on-click="clickBtn">
<a href="javascript:void(0)">
更多
<Icon type="ios-arrow-down"></Icon>
</a>
<DropdownMenu slot="list">
<DropdownItem :disabled="row.userType == 1" name="bind">角色绑定</DropdownItem>
<DropdownItem name="pwdReset">密码重置</DropdownItem>
</DropdownMenu>
</Dropdown>
// Dropdown下拉点击事件
clickBtn(value){
console.log(value);
}
这就只能接收到name值,那么之前下拉菜单的两个点击事件该怎么传值呢。。。
问题2:官网 Dropdown 点击事件 on-click 的返回值是 DropdownItem 的 name 值(如下图),如何通过点击事件获取当前该条数据的信息~~
实现:在Dropdown标签中使用箭头函数,一次拿到name、index、row的值,再通过判断name值将额外的值传过去,这样就能实现Dropdown的禁用和传递额外值的效果了~
<Dropdown :transfer="true" transfer-class-name="more" @on-click="(name) => clickBtn(index, row, name)">
<a href="javascript:void(0)">
更多
<Icon type="ios-arrow-down"></Icon>
</a>
<DropdownMenu slot="list">
<DropdownItem :disabled="row.userType == 1" name="bind">角色绑定</DropdownItem>
<DropdownItem name="pwdReset">密码重置</DropdownItem>
</DropdownMenu>
</Dropdown>
// Dropdown下拉点击事件
clickBtn(index, row, name){
if(name == 'bind'){
this.bind(index, row)
}else{
this.pwdReset(index, row)
}
}
前端小白积累经验篇~~