问题起源
一种很常见的网站优化,就是在客户进行危险操作的时候,让客户进行二次确认,从而避免因为用户一时手误,如图所示:
对话框的实现方式
这种方式无须多言,实现起来逻辑并不困难,难在这种方式代码量比较大,首先需要在HTML部分创建对话框代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <el-dialog v-if="confirmDialog" width="30vw" :visible.sync="confirmDialog" title="提示" :destroy-on-close="true" > <div> <div> {{ confirmMsg }} </div> <div style="margin-top: 10px;font-weight: bold;"> 是否继续操作 </div> </div> <div slot="footer"> <el-button @click="cancel">取消</el-button> <el-button type="primary" @click="confirm">确定</el-button> </div> </el-dialog>
|
这种方式虽然工作量大,但是有一个比较好的优点是,可以比较方便的调整提示操作的格式,一种普遍存在的场景是,用户在修改信息的时候需要核对修改的数据与原数据的区别,那么使用这种方式就可以很好的实现。
JS确认框
该种方式实现起来非常简单,可以单纯的通过Javascript来达到提示语的目的,如本文的的第一张图就是使用该种方式的截图。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| this.$confirm('确认删除数据吗?', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { this.$message({ type: 'succuss', message: '已取消删除' }) }).catch(() => { this.$message({ type: 'info', message: '已取消删除' }) })
|
el-popconfirm 气泡确认框
el-popconfirm
气泡确认框,这是一个Element-UI的组件,实现完成的样式如下。
一个简单的样例是:
1 2 3 4 5 6 7 8 9 10 11
| <template> <el-popconfirm confirm-button-text='好的' cancel-button-text='不用了' icon="el-icon-info" icon-color="red" title="这是一段内容确定删除吗?" > <el-button slot="reference">删除</el-button> </el-popconfirm> </template>
|
el-popconfirm
气泡确认框的详细文档见Element-UI官方文档。
总结
如果运营经理或者产品经理或者客户要求,能够细致的展示提示信息,而不是仅仅是一个操作确认的话,我们似乎只能选用第一种自定义对话框的方式;
相反,如果仅仅是为了避免用户误操作或者避免因为种种原因误删除数据,我们可以采用第二种JS确认框或者第三种气泡确认框,第三种需要修改html样式,第二中则只需要修改js即可。
还是那句话,具体看业务需求吧!
祝大家早日脱离CRUD Developer!