There's usually two-way data binding between View ...
# tornadofx
c
There's usually two-way data binding between View (the TextField) and the ViewModel. This is the default bind() in TornadoFX. In JavaFX, you'd make an explicit bindBidirectional() call. That means that changing one automatically changes the other. Type a character in a TextField, the corresponding property is automatically updated. When talking with the Model, I initiate actions from the ViewModel. These are usually Tasks so that I can put ProgressBars and status Labels in the UI. Also, Tasks support cancelling long-running operations. When the actions complete -- asynchronously because of the Task -- I use a notifications back-channel via the EventBus to let interested parties know that an operation is finished. This usually includes the one who initiated the action. That's for consistency