2015-11-04 3 views
0

Я уже несколько часов царапаю голову над этим, и после хорошего поиска я не нашел полезного решения.Угловой маршрут не разрешает услугу

Как состояние заголовка, мои зависимости не разрешаются провайдером маршрутов Углового. Это ошибка:

Unknown provider: testServiceProvider <- testService <- testService

Мой скомпилирован Javascript файл (app.js) выглядит следующим образом:

'use-strict'; 

var app = angular.module('test-app', ['ngRoute']); 

app.config(['$routeProvider', function ($routeProvider) { 
    $routeProvider 
     .when('/', { 
      templateUrl: 'views/home.html', 
      controller: 'HomeController', 
      resolve: { 
       testService: function (testService) { 
        console.log(testService.message); 
       } 
      } 
     }) 
}]); 

app.factory('apiService', ['$http', function ($http) { 
    function url(endpoint) { 
     return '/api/v1' + endpoint; 
    } 

    return { 
     user: { 
      authenticated: function() { 
       return $http({method: 'GET', url: url('/user/authenticated')}); 
      }, 

      login: function (token) { 
       return $http({method: 'GET', url: url('/user/login'), cache: false, headers: { 
        Authorization: 'Basic ' + token 
       }}); 
      }, 

      logout: function() { 
       return $http({method: 'GET', url: url('/user/logout')}); 
      }, 

      model: function() { 
       return $http({method: 'GET', url: url('/user/data')}); 
      } 
     } 
    }; 
}]); 

app.factory('testService', function() { 
    return { 
     message: 'Hello world' 
    }; 
}); 

app.controller('HomeController', ['$scope', '$http', function ($scope, $http, apiService, testService) { 
    $scope.user = { 
     authenticated: false, 
     error: '', 
     username: '', 
     password: '' 
    }; 

    $scope.login_button = 'Log in'; 

    $scope.isAuthenticated = function() { 
     return $scope.user.authenticated; 
    } 

    $scope.needsAuthentication = function() { 
     if (!$scope.user.authenticated) { 
      return true; 
     } 

     return false; 
    } 

    $scope.logIn = function ($event) { 
     $event.preventDefault(); 

     $scope.login_button = 'Please wait...'; 

     var token = btoa($scope.user.username + ':' + $scope.user.password); 

     apiService.user.login(token).then(function (success) { 
      $scope.user = success.data.user; 

      $scope.user.authenticated = true; 
     }, function (error) { 
      $scope.user.error = 'Please try logging in again.'; 

      $scope.login_button = 'Log in'; 
     }); 
    }; 
}]); 

Насколько я могу сказать, что все должно быть в порядке разрешения; я что-то упускаю или что-то недопонимаю?

+0

Я думаю, проблема в псевдониме. Вы используете testService как псевдоним для вашего разрешения. Инжектор может быть запутан. Попробуйте переименовать его, например: 'разрешение: { testData: function (testService) { console.log (testService.message); } } 'и переименовать его в контроллер. – Errorpro

+0

@Errorpro Он возвращает по существу ту же ошибку: 'Неизвестный поставщик: testServiceProvider <- testService <- testData'. – P810

+0

@ Errorpro на самом деле, я считаю, что, должно быть, была отдельная причина для ошибки, когда я опубликовал этот последний комментарий, потому что теперь он работает. Спасибо! – P810

ответ

0

Я думаю, что проблема в качестве псевдонима. Вы используете testService как псевдоним для вашего разрешения. Инжектор может быть запутан. Попробуйте переименовать его, например:

resolve: { testData: function (testService) { console.log(testService.message); } } 

и переименовать его в контроллер.

0

Вы должны внедрить услугу,

изменение

От:

app.controller('HomeController', ['$scope', '$http', function ($scope, $http, apiService, testService) 

Для:

app.controller('HomeController', ['$scope', '$http','apiService','testService' ,function ($scope, $http, apiService, testService) 
+0

Спасибо, что напомнили мне; Я действительно делал это заранее, но забыл добавить его обратно (я удалил его во время отладки). Однако добавление обратно приводит к той же ошибке. – P810