2014-11-03 14 views
7

Ich habe begonnen, Angular JS zu lernen, und ich habe ein Problem mit der Injektion eines Dienstes in einen Controller. Ich versuche, den ThreadFactory Dienst in ThreadController zu setzen, aber ich bekomme einen undefinierten Fehler beim Aufruf. Jeder Rat wäre großartig. Der Fehler Ich erhalte ist:

Unbekannt Anbieter: $ scopeProvider < - $ scope < - ThreadService

app.js

angular.module('threadsApp', ['ngRoute']); 
angular.module('threadsApp') 
    .config(function ($routeProvider, $locationProvider) { 
     $routeProvider 
      .when('/', { 
       templateUrl: 'views/index.html', 
      }) 
      .when('/selected/:topicName', { 
       templateUrl: 'views/threads.html', 
       controller: 'ThreadController', 
      }) 
      .otherwise({ 
       redirectTo: "/" 
      }); 
      $locationProvider.html5Mode(true); 
    }); 

ThreadController.js

angular.module('threadsApp').controller("ThreadController", 
    ["$scope", "$route", "$routeParams", "ThreadService", function ($scope, $route, $routeParams, ThreadService) { 
    $scope.test = "Hello!"; 
    $scope.test2 = ThreadService.get(); 
}]); 

ThreadService. js

angular.module('threadsApp').service("ThreadService", ["$scope", function ($scope) { 
    return { 
     get: function() { 
      return "Hello"; 
     } 
    } 
}]); 

Order of Imports

<script src="bower_components/jquery/dist/jquery.js"></script> 
    <script src="bower_components/angular/angular.js"></script> 
    <script src="bower_components/angular-route/angular-route.js"></script> 
    <script src="bower_components/bootstrap/dist/js/bootstrap.js"></script> 
    <script src="components/app.js"></script> 
    <script src="components/bodyController.js"></script> 
    <script src="components/TopicController.js"></script> 
    <script src="components/ThreadService.js"></script> 
    <script src="components/ThreadController.js"></script> 

Antwort

17

Sie können nicht wirklich injizieren $scope in Ihre ThreadService den Weg Sie versuchen zu. $scope ist kein typischer Service, wenn Sie es in einen Controller injizieren. Wenn Sie die $scope Injektion von Threadservice.js entfernen, würde ich wetten, dass der Fehler weggehen wird.

Injecting $scope into an angular service function()

:

Im Interesse der nicht überflüssig ist, kann eine ausführlichere Erklärung finden Sie hier

Verwandte Themen