将ItemViewModel标记为脏

时间:2018-02-21 07:58:37

标签: tornadofx

我有地址编辑器片段,在用户编辑地址后我将更改的模型值保存到数据库

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是否有望跟踪所有模型更改?如果客户端手动编辑“本地地址”列,则模型将变脏。

0 个答案:

没有答案