Я начал огромное изменение в моем коде 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 таким образом в первый раз. Кстати, функциональность контроллеров не влияет (также потому, что нет инъекции, просто простая функция и определения имен), когда я могу запустить приложение, остальное работает, проблема начинается, когда я пытаюсь использовать $ впрыснуть.
https://docs.angularjs.org/api/ng/type/angular.Module#config – Phil