Hey Jim Lai,
I strongly suggest that you read through the whole article. Using viewDidLoad inside View Model is exactly what I suggest *not* to do.
Again, as I said in the beginning of the article, there are different interpretations on the VM, and I'm pointing out why I think we should leave life cycles and UI names out of the VM.
Regarding the binding, that's not the point at all that I want to cover in the article. Specially because there are different implementations of Data Binding, like KVO, RX, Observable, and others. On top of that, we have 1 way data binding, 2 way data binding, etc. That I'll leave totally up to the reader.
For the purpose of simplicity, I opted for a callback solution (like in Scenario 4), which notifies the ViewController and automatically updates the UI. The definition of data binding, from Microsoft, is: "Data binding is the process that establishes a connection between the app UI and the data it displays. If the binding has the correct settings and the data provides the proper notifications, when the data changes its value, the elements that are bound to the data reflect changes automatically."
So it fits my needs, and doesn't add complexity which is not relevant for the article :)
I really hope you read through the article, understand the points and come back with constructive feedback!
Cheers.