一、el-form
- 调用
resetField()
方法时表单项不会重置为初始值。
需要为el-form-item
设置prop
,只有设置了该属性的表单项才会重置。
二、el-table
-
el-table-column
中添加el-input
,但不能输入。
<el-table-column property="a" label="a">
<el-input placeholder="请输入"></el-input>
</el-table-column>
需要给el-input
绑定列表每行数据对象的字段
<el-table-column property="a" label="a" #default="scope">
<el-input placeholder="请输入" v-model="scope.row.a"></el-input>
</el-table-column>
- 隐藏多选时的全选按钮
<el-table :data="listDatas" :header-cell-class-name="headerCellClassName">
<el-table-column type="selection"></el-table-column>
</el-table>
headerCellClassName: function(row) {
// 第0列时为全选框
if (row.columnIndex == 0) {
return "hideSelection"
}
}
// 使用display: none来隐藏全选框 /deep/是必须的
/deep/.hideSelection .el-checkbox {
display: none;
}
三、el-dialog
- 为
el-dialog
中弹出的组件绑定属性,属性值与父组件的值仍有联系。
最好复制属性的值以切断与父组件的联系,可使用JSON.parse(JSON.stringify(val))
复制对象。
watch: {
data: {
immediate: true,
deep: true,
handler: function(val) {
let form = JSON.parse(JSON.stringify(val))
this.form = form
}
},
},
-
el-dialog
关闭后下次进入后仍会显示之前的数据。
应该将组件绑定的属性值置空,下次进入时就不会显示之前的数据。
通常在close
方法中置空。
<el-dialog title="" :visible.sync="show" @close="closeAction">
<custom :data="data"></custom>
</el-dialog>
closeAction: function() {
this.data = {}
}
-
destroy-on-close
属性为true时并不会销毁元素。
<el-dialog title="" :visible.sync="show" :destroy-on-close="true">
<div>
<input></input>
</div>
</el-dialog>
经查询,el-dialog
中必须是一个组件,:destroy-on-close="true"
才会销毁组件。
<el-dialog title="" :visible.sync="show" :destroy-on-close="true">
<custom></custom>
</el-dialog>
但有个问题,当el-dialog
关闭后,组件会自动销毁,但也会立即重新创建组件,会直接触发组件的生命周期方法created
与mounted
,不知道为何这样设计。
可使用v-if
或绑定动态的key
,就能解决这个问题。
<el-dialog title="" :visible.sync="show" v-if="show">
<custom></custom>
</el-dialog>
<el-dialog title="" :visible.sync="show" :key="key">
<custom></custom>
</el-dialog>
此时当el-dialog
打开时,组件才会新建,才会触发created
与mounted
。
网友评论