I'm kind of confused why `balloonElement` or `contentElement` are in the view model.  Normally these would be in `Balloon` and it would use knockout to data bind specific properties to the ViewModel properties that need to be set.  In general, the goal is that the ViewModel knows nothing about the HTML that is displaying it.