thomasnield
12/19/2016, 2:08 PMthomasnield
12/19/2016, 2:16 PMraniejade
12/19/2016, 2:21 PMraniejade
12/19/2016, 2:22 PMedvin
12/19/2016, 2:26 PMthomasnield
12/19/2016, 6:43 PMraniejade
12/20/2016, 4:52 AMViewModel
class, is that the VM
in MVVM?edvin
12/20/2016, 8:02 AMraniejade
12/20/2016, 8:04 AMModel
for me 🙂 `ViewModel`s usually abstract your view, to make it easier to unit test.raniejade
12/20/2016, 8:09 AMinterface Command {
fun executableProperty()
fun runningProperty()
operator fun invoke()
}
class LoginViewModel {
// username field
var username: String
fun usernameProperty(): StringProperty
// password field
var password: String
val passwordProperty(): StringProperty
// login button
// commands can be disabled and can be long running
fun loginCommand(): Command
}
edvin
12/20/2016, 8:13 AMView
or Fragment
normally contains your UI interaction code. That LoginViewModel looks weird. You have a username
property of type String and then a usernameProperty
property of type StringProperty, but they don't seem to be connected? We provide some nice abstractions to create JavaFX properties with minimal boilerplate, btw.raniejade
12/20/2016, 8:14 AMedvin
12/20/2016, 8:14 AMraniejade
12/20/2016, 8:15 AMedvin
12/20/2016, 8:16 AMedvin
12/20/2016, 8:16 AMedvin
12/20/2016, 8:17 AMedvin
12/20/2016, 8:18 AMraniejade
12/20/2016, 8:18 AMedvin
12/20/2016, 8:19 AMget
and set
calls operate on usernameProperty.value
raniejade
12/20/2016, 8:19 AMedvin
12/20/2016, 8:20 AMedvin
12/20/2016, 8:20 AMraniejade
12/20/2016, 8:22 AMraniejade
12/20/2016, 8:23 AMedvin
12/20/2016, 8:23 AMraniejade
12/20/2016, 8:25 AMraniejade
12/20/2016, 8:26 AMedvin
12/20/2016, 8:27 AMedvin
12/20/2016, 8:28 AM