2015-11-12 4 views
0

Я начал огромное изменение в моем коде AngularJs, чтобы улучшить его. Я искал this reference и нашел его довольно интересным, поэтому я менял свой код, чтобы следить за инструкциями.

Когда я добрался до конфигурации маршрута, я не смог заставить его работать. Если я использую .config, как и код ниже, все работает нормально.

angular 
.module('agApp') 
.config(
['$stateProvider', '$urlRouterProvider', '$locationProvider', 
function ($stateProvider, $urlRouterProvider, $locationProvider) { 

    $urlRouterProvider.when("/", "/First"); 
    $urlRouterProvider.when("", "/First"); 
    $urlRouterProvider.otherwise("/First"); 

    $stateProvider 
     .state('first', { 
      url: "/First", 
      views: { 
       "main": { 
        templateUrl: "app/component/first.html", 
        controller: 'FirstController', 
        controllerAs: 'vm' 
       } 
      } 
     }) 
     .state('second', { 
      url: "/Second", 
      views: { 
       "main": { 
        controller: 'SecondController', 
        controllerAs: 'vm', 
        templateUrl: "app/component/second.html" 
       } 
      } 
     }) 
}]); 

Но когда я пытаюсь использовать код как порекомендован на направляющей, как это:

angular 
.module('agApp') 
.config('ConfigRouter', ConfigRouter); 

/* @ngInject */ 
function ConfigRouter($locationProvider,$stateProvider,$urlRouterProvider) { 

    $urlRouterProvider.when("/", "/First"); 
    $urlRouterProvider.when("", "/First"); 
    $urlRouterProvider.otherwise("/First"); 

    $stateProvider 
     .state('first', { 
      url: "/First", 
      views: { 
       "main": { 
        templateUrl: "app/component/first.html", 
        controller: 'FirstController', 
        controllerAs: 'vm' 
       } 
      } 
     }) 
     .state('second', { 
      url: "/Second", 
      views: { 
       "main": { 
        controller: 'SecondController', 
        controllerAs: 'vm', 
        templateUrl: "app/component/second.html" 
       } 
      } 
     }) 
} 

Тогда она перестает работать, и я получаю эту ошибку:

Failed to instantiate module agApp due to: Error: [ng:areq]
Argument 'fn' is not a function, got string

I (по крайней мере, я думаю, что я сделал), потому что выведенный сокращенный код выглядит так:

function ConfigRouter(a,b,c){c.when([.... rest of the code...] ),ConfigRouter.$inject=["$locationProvider","$stateProvider","$urlRouterProvider"], 

На уродовать процессе я использую ngAnnotate в таком порядке: concat, ngAnnotate и, наконец uglify

Я пропускаю что-то здесь? Что может случиться с моим кодом?
Нужен ли мне дополнительный файл, чтобы включить $inject?

Я пытаюсь создать свой AngularJs таким образом в первый раз. Кстати, функциональность контроллеров не влияет (также потому, что нет инъекции, просто простая функция и определения имен), когда я могу запустить приложение, остальное работает, проблема начинается, когда я пытаюсь использовать $ впрыснуть.

+0

https://docs.angularjs.org/api/ng/type/angular.Module#config – Phil

ответ

4

Ошибка говорит все: вы предоставляете строку в качестве аргумента, пока она должна быть функцией. Это потому, что у блоков config нет имен. Он должен быть

angular 
.module('agApp') 
.config(ConfigRouter); 
+0

Хорошо, я пытался, как это из-за того, как контроллеры работают, что является синтаксис, который я использовал в конфиге. Но я попробую это. благодаря – celsomtrindade

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