Abdul Ahmad
Abdul Ahmad

Reputation: 10021

using $scope with controller as syntax

UPDATE

here's the article where I saw the examples below: https://github.com/johnpapa/angular-styleguide

after re-reading the example I realized that a specific and unique scenario was being explained, thus this question may not be fully valid. I will not delete it, however, so that if anyone has any further knowledge, they can contribute and help the community.


I've been reading about angular best practices and I'm convinced after reading a few articles that the best approach is to use the controller as syntax:

angular.module('example', [])
.controller('somectr', somectr);

somectr.$inject =['$http'];

function somectr($http) {
 var vm = this;
 this.x;
}

however I saw an article that shows this syntax, but it also injects a scope:

somectr.$inject = ['$scope', '$http'];

function somectr($scope, $http) {
 var vm = this;
 this.x;
 this.y;

 $scope.someFunc = function() {}
}

I thought that using the controller as syntax means no need to use a scope object. What user case would require the controller as syntax but still make use of a scope object?

Upvotes: 0

Views: 299

Answers (1)

Felipe Skinner
Felipe Skinner

Reputation: 16626

An example of injecting $scope even if you are using controllerAs is when you want to pub/sub events.

If you want to Publish some events, you would use:

$scope.$broadcast('eventName', value)
$scope.$emit('eventName', value)

For Subscribing:

$scope.$on('eventName', function)

Take a further look at: https://docs.angularjs.org/api/ng/type/$rootScope.Scope

Another example would be if you are using $scope.$watch

There's a good article on controllerAs by ToddMotto: http://toddmotto.com/digging-into-angulars-controller-as-syntax/

Upvotes: 3

Related Questions