call handlers within scope.$apply so model changes are detected by Angular