咱们晓得element 提供的popover 是主动敞开的, 那么想手动管制敞开怎么做呢
能够利用$refs['ref_']提供的doClose() 办法
比方在表格中, td 项点击弹出popover
<el-table-column prop="" label="出价" align="center"> <template slot-scope="scope"> <span>{{ parseFloat(scope.row.price).toFixed(2) }} <el-popover :ref="'ref_'+scope.row.id" placement="right-start" width="200" trigger="click" > <div> <p> <input :id="'price_'+scope.row.id" :value="parseFloat(scope.row.price).toFixed(2)" style="width: 100px; height:30px;"/> <el-button type="text" size="mini" @click="setPrice(scope)">确定</el-button> <el-button type="text" size="mini" @click="cancelPrice(scope)">勾销</el-button> </p> </div> <i slot="reference" class="el-icon-edit cursor-pointer" v-if="editpriceFlg"></i> </el-popover> </span> </template> </el-table-column>
js 局部 scope._self.$refs['ref_'+id].doClose() 敞开
cancelPrice(scope){ let id = scope.row.id scope._self.$refs['ref_'+id].doClose() }, setPrice(scope){ let id = scope.row.id let val = $("#price_"+id).val() if(!this.validPrice(val)){ $("#price_"+id).val(scope.row.price) return } this.listLoading = true request.post('/price',{id: id, price: val}).then((resData)=>{ this.$message.info("批改胜利") }).finally((_)=>{ this.listLoading = false this.select() scope._self.$refs['ref_'+id].doClose() }) },