Caitlin, I get the gist of the third example. I looked online and found 
that upon minification, "$scope & $http" are turned to something more 
generic like "a & b" and those variables would lose their context, breaking 
the code. So that adding "[“$scope”, “$http”..."  either prevents 
minification (or minification factors in) specifically on those variables. 

I'm a little fuzzy on global vs local $scope. 
Is the fact that '$scope' a literal make it a local variable?

Thanks.

On Tuesday, March 10, 2015 at 11:57:04 AM UTC-7, Caitlin Potter wrote:
>
> This is a way of interacting with the injector (one of several). The 
> string literal containing ‘$scope’ tells the injector that the parameter at 
> index 0 (first item in the array) should be ‘$scope’ from the injector. 
> ‘$scope’ isn’t registered globally in the injector, it comes from locals 
> (so, if you instantiate a controller via the $controller service, you can 
> supply injector locals via the second parameter, `$controller(‘ctrlName’, { 
> $scope: myScope });`.
>
> There are a few ways to use the injector:
>
> ```
> // One example:
> MyController.$inject = [‘$scope’, ‘$http’];
> function MyController($scope, $http) {
>   // ...
> }
> angular.controller(“MyController”, MyController);
>
> // The example you provided:
> angular.controller(“MyController”, [“$scope”, “$http”, function($scope, 
> $http) {
>   // ...
> }]);
>
> // The third method is discouraged, because it requires parsing 
> `function.toString()`, and this
> // does not work as expected when code is minified.
> angular.module(“MyController”, function($scope, $http) {
>   // ...
> });
> ```
>
> These rules apply to everything that the injector deals with, from 
> directives to services to filters to controllers.
>
> If that didn’t clear things up, feel free to ask for clarification =)
>
> On Mar 10, 2015, at 2:44 PM, adam morris <[email protected] 
> <javascript:>> wrote:
>
> Hi. I'm an angular newbie. I couldn't find an explanation of this part of 
> a controller anywhere:
>
> controller('myController',
> [*'$scope'*,                   //mentioned first time - *what does this 
> do?*
>      function*($scope)*  //mentioned second time - *how does this 
> ($scope) relate to '$scope' above?*
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "AngularJS" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] <javascript:>.
> To post to this group, send email to [email protected] <javascript:>
> .
> Visit this group at http://groups.google.com/group/angular.
> For more options, visit https://groups.google.com/d/optout.
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.

Reply via email to