Replacing $scope.$watch with Lifecycle Hooks

Angular 1.5's components and directives have awesome lifecycle hooks that allow us to get rid of $scope.$watch in many cases. This makes code cleaner, faster and upgrade-ready. Let's see step-by-step how to do it.