The AngularJS way

Still some jQuery bounding the model to the view but for the most part
it's pure AngularJS.