Leon
Leon

Reputation: 1881

AngularJS - use custom service within controller

What is the correct way to inject a service into a controller in Angular?

I have written a service and i’d like to use it in my controllers. But i keep getting an error. Maybe it would be easy for someone to spot my mistake…

authController.js

(function() {

'use strict';

angular
       .module('authApp')
       .service('authService', function($auth, $state, $http, $rootScope, envService,   $scope) {
          // some code 
        })
       .controller('SignupController', SignupController, ['$scope', 'authService’]);

       function SignupController($http, $scope, $rootScope, $location, envService, authService) {
          // want to use my authService here 
       }

 ...

At this point I get the following error :

angular.js:12477 Error: [$injector:unpr] Unknown provider: $scopeProvider <- $scope <- authService

What is wrong with the way I have injected authService into my signupController??

Thanks.

Upvotes: 0

Views: 735

Answers (2)

Alvaro Vazquez
Alvaro Vazquez

Reputation: 372

You have an error declaring your controller. Declaring a controller with the array syntax receives the name of the controller as a String as first parameter, and an array as a second parameter. The last element of the array must be the a function with all the controller logic. That function must have as many parameters as previous elements in the array itself. In your case it should be something like:

(function() {

'use strict';

angular
       .module('authApp')
       .service('authService', function($auth, $state, $http, $rootScope, envService,   $scope) {
          // some code 
        })
       .controller('SignupController', ['$http', '$scope', '$rootScope', '$location', 'envService', 'authService',  function ($http, $scope, $rootScope, $location, envService, authService) {
          // Use your authService here 
       }]);
 ...

Upvotes: 1

yogurt
yogurt

Reputation: 380

You can check the styleguide to write your controllers, services and inject your dependencies in a better way.

Upvotes: 0

Related Questions