【问题标题】:Angular app with ui-router not hitting controller unless its inline function带有 ui-router 的 Angular 应用程序不会命中控制器,除非它的内联函数
【发布时间】:2016-06-22 11:35:29
【问题描述】:

我在使用 ui-router 时遇到问题。如果我使用内联函数,它可以工作,否则当我点击路由时,控制器不会被使用。我可以调试浏览器并且 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() {
    }
}
})();

【问题讨论】:

    标签: javascript angularjs angular-ui-router angularjs-controller angularjs-controlleras


    【解决方案1】:

    $injector/unpr?p0=Provider 声明您的依赖项 正在询问未在模块中注册。

    那是因为您要求注入器在此行上提供 ''(空白依赖项),因此注入器没有找到对该名称的任何依赖项(很明显)并抛出 $injector/unpr?p0=Provider 错误。

    MainCtrl.$inject = [''];
    

    为了解决这个问题,你应该把它留空,如下所示。

    MainCtrl.$inject = [];
    

    【讨论】:

    • 您的正确很明显。感谢您的解释。
    • @JamesMorris 很高兴为您提供帮助...谢谢 :)
    猜你喜欢
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    • 2015-08-17
    • 2015-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多