Angular 带有 ui-router 的应用程序不会触发控制器,除非其内联函数
Angular app with ui-router not hitting controller unless its inline function
我在使用 ui-路由器时遇到问题。如果我使用内联函数,它会起作用,否则当我点击路由时,控制器不会被使用。我可以调试浏览器并且正在交付 js,但没有触及任何断点。
//This is the error when I go to the non working route
Error: [$injector:unpr] http://errors.angularjs.org/1.5.0/$injector/unpr?p0=Provider%20%3C-%20%20%3C-%20MainCtrl
//The commented main route works
(function(){
angular.module('invNodeServer',[
'ui.router'
])
.config(function ($stateProvider,$urlRouterProvider,$locationProvider) {
$locationProvider.html5Mode({
enabled: true,
requireBase: false
});
$urlRouterProvider.otherwise("/");
$stateProvider
.state('main', {
url: "/",
templateUrl: "app/main/main.html",
controller:'MainCtrl',
controllerAs:'vm'
})
//.state('main', {
// url: "/",
// templateUrl: "app/main/main.html",
// controller:function($scope){
// $scope.title = 'Main'
// }
//})
})
})();
// This is the controller for the non working route
(function () {
'use strict';
var controllerId = 'MainCtrl';
angular.module('invNodeServer').controller(controllerId, MainCtrl);
MainCtrl.$inject = [''];
/* @ngInject */
function MainCtrl() {
/* jshint validthis: true */
var vm = this;
vm.title = 'Main';
vm.activate = activate;
activate();
////////////////
function activate() {
}
}
})();
$injector/unpr?p0=Provider
states that the dependency for which you
are asking isn't register in module.
那是因为你要求注入器在此行给出 ''
(空白依赖),所以注入器没有发现任何对该名称的依赖(很明显)并抛出 [=12 的错误=].
MainCtrl.$inject = [''];
为了解决这个问题,您应该像下面一样将其留空。
MainCtrl.$inject = [];
我在使用 ui-路由器时遇到问题。如果我使用内联函数,它会起作用,否则当我点击路由时,控制器不会被使用。我可以调试浏览器并且正在交付 js,但没有触及任何断点。
//This is the error when I go to the non working route
Error: [$injector:unpr] http://errors.angularjs.org/1.5.0/$injector/unpr?p0=Provider%20%3C-%20%20%3C-%20MainCtrl
//The commented main route works
(function(){
angular.module('invNodeServer',[
'ui.router'
])
.config(function ($stateProvider,$urlRouterProvider,$locationProvider) {
$locationProvider.html5Mode({
enabled: true,
requireBase: false
});
$urlRouterProvider.otherwise("/");
$stateProvider
.state('main', {
url: "/",
templateUrl: "app/main/main.html",
controller:'MainCtrl',
controllerAs:'vm'
})
//.state('main', {
// url: "/",
// templateUrl: "app/main/main.html",
// controller:function($scope){
// $scope.title = 'Main'
// }
//})
})
})();
// This is the controller for the non working route
(function () {
'use strict';
var controllerId = 'MainCtrl';
angular.module('invNodeServer').controller(controllerId, MainCtrl);
MainCtrl.$inject = [''];
/* @ngInject */
function MainCtrl() {
/* jshint validthis: true */
var vm = this;
vm.title = 'Main';
vm.activate = activate;
activate();
////////////////
function activate() {
}
}
})();
$injector/unpr?p0=Provider
states that the dependency for which you are asking isn't register in module.
那是因为你要求注入器在此行给出 ''
(空白依赖),所以注入器没有发现任何对该名称的依赖(很明显)并抛出 [=12 的错误=].
MainCtrl.$inject = [''];
为了解决这个问题,您应该像下面一样将其留空。
MainCtrl.$inject = [];