2016-12-08 5 views
1

AngularJS v1.6.0.Модуль не загружается

Как понять, какой модуль не загружается? Почему и как это исправить?

я получаю следующее сообщение об ошибке:

angular.js:38 Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.6.0/$injector/modulerr?p0=fooApp&p1=Error%…c%20(http%3A%2F%2Fviic.com%2Flibs%2Fangular%2Fangular.min.js%3A21%3A332)(…)(anonymous function) @ angular.js:38(anonymous function) @ angular.js:4756q @ angular.js:357g @ angular.js:4717eb @ angular.js:4639c @ angular.js:1838Lc @ angular.js:1859oe @ angular.js:1744(anonymous function) @ angular.js:32890b @ angular.js:3314 
www-embed-player.js:218 GET https://googleads.g.doubleclick.net/pagead/id net::ERR_BLOCKED_BY_CLIENTRd @ www-embed-player.js:218Vd @ www-embed-player.js:222(anonymous function) @ www-embed-player.js:249L @ www-embed-player.js:173re @ www-embed-player.js:246xk @ www-embed-player.js:654(anonymous function) @ www-embed-player.js:705(anonymous function) @ S0Q4gqBUs7c?controls=0&showinfo=0&enablejsapi=1&showsearch=0&rel=0:10 

Мое приложение внешнего интерфейса структура:

- public 
    - js/controllers/VideoChannelCtrl.js 
    - js/services/CoubService.js 
    - js/app.js 
    - js/appRoutes.js 
    - index.html 
    - views/player.html 
    - libs/angular/angular.min.js 
    - libs/angular-route/angular-route.min.js 
    ... 

index.html

... 
<script src="libs/angular/angular.min.js"></script> 
<script src="libs/angular-route/angular-route.min.js"></script> 
<script src="js/app.js"></script> 
<script src="js/controllers/VideoChannelCtrl.js"></script> 
<script src="js/services/CoubService.js"></script> 
<script src="js/appRoutes.js"></script> 
... 

JS/app.js

var fooApp = angular.module('fooApp', ['ngRoute', 'appRoutes', 'VideoChannelCtrl', 'CoubService']); 

JS/appRoutes.js

angular.module('appRoutes', []) 
    .config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) { 

    $routeProvider 

     // home page 
     .when('/', { 
      templateUrl: 'views/player.html', 
      controller: 'VideoChannelController' 
     }); 

    $locationProvider.html5Mode(true); 

}]); 

JS/Контроллеры/VideoChannelCtrl.js

fooApp.controller('VideoChannelController', ['$scope', 'Coub', function($scope, Coub) { 

    $scope.tagline = 'To the moon and back!'; 

    Coub.get().success(function(data) { 
     $scope.videolink = data[0].url; 
    }); 
}]); 

JS/услуги/CoubService.js

angular.module('CoubService', []).factory('Coub', ['$http', function($http) { 
    return { 
     get : function() { 
      return $http.get('/api/videolinks'); 
     }, 
     delete : function(id) { 
      return $http.delete('/api/videolinks/' + id); 
     }; 
}]); 
+0

Является ли 'VideoChannelCtrl' контроллер или модуль? Если это контроллер, вы не можете вводить его в качестве зависимости от модуля. – Developer

+0

Это контроллер. – trex

+0

ошибка дает вам ссылку с объяснением и модули, которые не загружаются. Вы должны это посмотреть. –

ответ

2

Вы не впрыскивать контроллер VideoChannelController правильно.

Я предлагаю вам объявить, что ваш контроллер, как это:

JS/Контроллеры/VideoChannelCtrl.js

angular.module('fooApp') 
    .controller('VideoChannelController', VideoChannelController); 

VideoChannelController.$inject = ['$scope', 'Coub']; 

function VideoChannelController($scope, Coub) { 

    $scope.tagline = 'To the moon and back!'; 

    Coub.get().success(function(data) { 
     $scope.videolink = data[0].url; 
    }); 
} 

Как VideoChannelController контроллер объявлен как контроллер fooApp модуля приложения, вы не нуждаются в инъекции, такие как:

var fooApp = angular.module('fooApp', ['ngRoute', 'appRoutes', 'VideoChannelCtrl', 'CoubService']); 

Вы можете удалить VideoChannelController из этой декларации.

Кроме того, вам следует обратиться к следующему AngularJS директивы развития:

1

ли VideoChannelCtrl контроллер или модуль ? Если это контроллер, вы не можете вводить его в качестве зависимости от модуля. Удалите его из зависимостей модулей. angular.module('fooApp', ['ngRoute', 'appRoutes', 'CoubService']);

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

Для например, вы можете иметь службу в том же fooApp, как это: angular.module('fooApp').factory('Coub', ....);

angular.module('fooApp') -> получает уже зарегистрированный модуль с именем fooApp, и вы можете добавить контроллеры/услуги/директивы и т.д. в том же модуле.

Так что, если вы добавите данный контроллер, обслуживание и конфигурации в fooApp модуль, то вы можете определить модуль, как angular.module('fooApp', ['ngRoute']);

Смежные вопросы