el-select 的change事件
当我们在修改el-select值的时候,会触发change事件,因此可以改变v-model的值,一开始使用的时候就像下面这样
<el-table-column align="center" label="机台">
<template slot-scope="scope">
<el-select
clearable
filterable
no-data-text="无可选机床"
placeholder="请选择"
:change="changeValue"
v-model="scope.row.machineTools[0].id"
>
<el-option
:key="item.id"
:label="item.machineToolName+'('+item.coding+')'"
:value="item.id"
v-for="item in scope.row.availableMachineTools"
></el-option>
</el-select>
</template>
</el-table-column>
但是会出现一个问题:我们有多个el-select,只是改变了其中一个el-select的值,但是会触发所有的change事件;或者我们是v-for生成了很多个调用同一个change函数的el-select,这时所有的el-select都会执行一遍change函数,这会给我们带来意想不到的问题。
那怎么处理这个问题呢?elementUI文档给我们介绍了另一个事件:visible-change,用法如下
<el-table-column align="center" label="机台">
<template slot-scope="scope">
<el-select
clearable
filterable
no-data-text="无可选机床"
placeholder="请选择"
:visible-change="changeValue"
v-model="scope.row.machineTools[0].id"
>
<el-option
:key="item.id"
:label="item.machineToolName+'('+item.coding+')'"
:value="item.id"
v-for="item in scope.row.availableMachineTools"
></el-option>
</el-select>
</template>
</el-table-column>
我以为可以解决,但是并没有用,突然我注意到:chang,想到了应该用@change,一试果然解决了。
<el-table-column align="center" label="机台">
<template slot-scope="scope">
<el-select
clearable
filterable
no-data-text="无可选机床"
placeholder="请选择"
@visible-change="changeValue"
v-model="scope.row.machineTools[0].id"
>
<el-option
:key="item.id"
:label="item.machineToolName+'('+item.coding+')'"
:value="item.id"
v-for="item in scope.row.availableMachineTools"
></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column align="center" label="机台">
<template slot-scope="scope">
<el-select
clearable
filterable
no-data-text="无可选机床"
placeholder="请选择"
@change="changeValue"
v-model="scope.row.machineTools[0].id"
>
<el-option
:key="item.id"
:label="item.machineToolName+'('+item.coding+')'"
:value="item.id"
v-for="item in scope.row.availableMachineTools"
></el-option>
</el-select>
</template>
</el-table-column>
v-bind的缩写是:,v-on的缩写是@
change和visble-change 是函数,应该用@,不能用:,
这些细节在日常开发中要注意
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。