It seems preferable to me that the state and the view be separate, and that the view be able to poll the state it needs, rather than have every event that can potentially alter the view be tied to that view explicitly.

It is different than how the rest of this is written though, so I'll change to match.