0

次のコードがあります

class MainView : View("Example") {
    val model: UserModel = UserModel()

    init {
        model.item = User(status = true)
    }

    override val root = vbox {
        useMaxWidth = true
        label(model.status)
        button("Get new status") {
            action {
                model.item.updateStatus()
                println("Status in model: ${model.status.value}")
                println("Status in backing object: ${model.item.status}")
            }
        }
    }
}

class User(var status: Boolean, val api: Api = Api()) {

    fun updateStatus() {
        status = api.getStatus()
    }
}


class UserModel : ItemViewModel<User>() {
    val status = bind(User::status)
}


class Api {
    fun getStatus(): Boolean {
        val list = listOf(true, false)
        return list[(Math.random() * list.size).toInt()]
    }
}

ボタンをクリックすると変更されますmodel.itemPropertyが、変更されmodel.statusません。呼び出しはうまくいきますが、バッキングプロパティが変更された後に更新model.rollback()を取得するのは適切な方法ではないと思います。に新しいオブジェクトを割り当てずに更新 (および結果として対応するビュー) するItemViewModelTornadoFX の方法はありますか? UserModelUsermodel.item

4

1 に答える 1