OK, so what is going on here is that `$render` is only called upon detecting model changes. Calling $setViewValue is going to update the model, but $render won't fire due to this check:
https://github.com/angular/angular.js/blob/master/src/ng/directive/input.js#L1153

In short: as the current AngularJS implementation stands we need to call `$render()` here.