2014-11-03 14 views
7

Ho iniziato a imparare Angular JS e sto riscontrando un problema con l'iniezione di un servizio in un controller. Sto cercando di mettere il servizio ThreadFactory in ThreadController, ma sto ricevendo un errore indefinito quando lo si chiama. Qualsiasi consiglio sarebbe grande. L'errore che sto ricevendo è:

fornitore sconosciuto: $ scopeProvider < - $ portata < - 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"; 
     } 
    } 
}]); 

Ordine di importazioni

<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> 

risposta

17

Non si può effettivamente iniettare $scope nella vostra ThreadService il modo in cui si sta cercando di. $scope non è un servizio tipico quando lo si inserisce in un controller. Se si rimuove l'iniezione $scope da Threadservice.js, punterei l'errore sparirà.

Nell'interesse di non essere ridondante, una spiegazione più completa può essere trovato qui:

Injecting $scope into an angular service function()

Problemi correlati