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.