The Controller As syntax provides a way to access properties and methods of a controller declared on the controller via this. The controller instance is being published as the specified property on the scope.
"Controller As" syntax was introduced in AngularJS 1.2. Per AngularJS doc:
Using controller as makes it obvious which controller you are accessing in the template when multiple controllers apply to an element.
This does not replace $scope. If some specific bindings/watchers/broadcasts/etc are needed, the $scope could be injected into the controller and used as usual.
Some helpful readings:
- Do You Like Your Angular Controllers with or without Sugar? by John Papa
- Kill $scope - Replace it with controllerAs by Dave Ceddia
- Digging into Angular’s “Controller as” syntax by Todd Motto