javascript - $scope not injected, still referenced. Why does it work? -


in angular material starter app, 'usercontroller' defined without injecting $scope service.

so in constructor function, variables created properties of object:

function usercontroller( userservice, $mdsidenav, $mdbottomsheet, $timeout, $log )  {     var self = this;      self.selected     = null;     self.users        = [ ];     self.selectuser   = selectuser;     self.togglelist   = toggleuserslist;     self.makecontact  = makecontact; 

but then, in self.selectuser function, value of array self.users referenced $scope.users

  function selectuser ( user ) {   self.selected = angular.isnumber(user) ? $scope.users[user] : user; } 

it works though $scope never injected. , if change self.users, works well.

is $scope implicitly injected in every angular controller? automatically mirror object in controller constructor function?

what's going on?

here's code https://github.com/angular/material-start

i cloned repo , tested it's not working saying .$scope not defined error. have inject constructor work no not automatically injected need pass $scope argument controller use otherwise should error $scope undefined can giving conditions in selecteduser function , never come $scope in order react on that.

    function usercontroller( userservice, $mdsidenav, $mdbottomsheet, $timeout, $log , $scope)      { } function selectuser ( user ) {       //try change line , run code , select user error       self.selected = angular.isnumber(1) ? $scope.users[user] : user;       console.log($scope) //$scope undefine     } 

Comments