错误:[$ injector:unpr]试图解决问题

时间:2014-12-12 14:39:32

标签: angularjs angular-ui-router

我有一个有决心的州:

function config($stateProvider, $urlRouterProvider) {
    $stateProvider
        .state('emails.list', {
            url: "/list/:folder/:page",
            parent: 'emails',
            templateUrl: "views/emails.list.html",
            data: { pageTitle: 'Mail Inbox' },
            resolve: {
                searchResult: ['Emails', function (Emails) {
                    return 1;
                }]
            }
        });
}

我有一个控制器用于此状态:

function EmailListCtrl($scope, searchResult, $stateParams, $state) {
...
}
angular.module('peachy').controller('EmailListCtrl', EmailListCtrl);

当我尝试将searchResult传递给控制器​​时,我收到错误[$ injector:unpr]。怎么修好? (或者配置上可能有问题) Angular版本是1.3.6

我的错误:

我使用ng-controller调用了EmailListCtrl。正确的方法是在状态中设置控制器名称:

function config($stateProvider, $urlRouterProvider) {
    $stateProvider
        .state('emails.list', {
            ...
            controller: 'EmailListCtrl'
        });
}

1 个答案:

答案 0 :(得分:0)

有一个working plunker。尽量确保即使是EmailListCtrl也能正确地回收所有需要的依赖项:

function EmailListCtrl($scope, result, $stateParams, $state) {
  $scope.data = { searchResult : result };
};
EmailListCtrl.$inject = ['$scope','searchResult','$stateParams','$state'];
$inject 包含明确的angluar IoC定义...所以我甚至可以使用结果作为参数名称而不是 searchResult

检查here