我有地址编辑器片段,在用户编辑地址后我将更改的模型值保存到数据库
fun saveAddressTable(tableViewEditModel: TableViewEditModel<Client>) {
tableViewEditModel.items.asSequence()
.filter { it.value.isDirty }
.forEach {
//do stuff }
}
有些地方有明显的错误,我可以通过编程方式修复,但是在更改之后模型没有标记为脏。
例如,
fun autoEditAddressTable(tableViewEditModel: TableViewEditModel<Client>) {
tableViewEditModel.items.asSequence()
.forEach {
val client = it.value.item
client.localProperty.value = client.local.replace(",{2,}".toRegex(), ",")
}
}
UI中反映的更改,但模型本身并不脏。我找到了markDirty()属性方法,但它没有多大帮助。由于模型未标记为脏,因此在保存时失败了过滤条件。
center = tableview ( controller.clients ) {
column("Local Address", Client::localProperty)
.prefWidth(400.0)
.makeEditable()
bindSelected(controller.clientModel)
enableDirtyTracking()
tableViewEditModel = editModel
}
TableViewEditModel是否有望跟踪所有模型更改?如果客户端手动编辑“本地地址”列,则模型将变脏。