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 = [];