So, there are 2 kinds of things that can be injected into a function: - Things which are registered with the injector (eg, things you register via angular.controller(“controllerName”, …)) - Local variables, which are not registered with the injector.
You don’t need to worry about the distinction until you’re doing things with the injector, but it really just means that locals allow you to inject things which are not “registered” with the injector. > On Mar 10, 2015, at 4:46 PM, adam morris <[email protected]> wrote: > > 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 >> <http://groups.google.com/group/angular>. >> For more options, visit https://groups.google.com/d/optout >> <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] > <mailto:[email protected]>. > To post to this group, send email to [email protected] > <mailto:[email protected]>. > Visit this group at http://groups.google.com/group/angular > <http://groups.google.com/group/angular>. > For more options, visit https://groups.google.com/d/optout > <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.
