angularjs:注入$ uibModalInstance的问题

时间:2016-03-25 08:36:11

标签: angularjs

我有一个控制器:

(function() {
    'use strict';

    angular
        .module('myApp')
        .controller('ConsultantController', ConsultantController);

    ConsultantController.$inject = ['$scope', '$state', 'Consultant'];

    function ConsultantController ( $scope, $state, Consultant) {
        var vm = this;
        vm.consultants = [];
        vm.loadAll = function() {
            Consultant.query(function(result) {
                vm.consultants = result;
            });
        };

        vm.loadAll();

    }
})();

如果我注入$ uibModalInstance依赖项:

(function() {
    'use strict';

    angular
        .module('myApp')
        .controller('ConsultantController', ConsultantController);

    ConsultantController.$inject = ['$uibModalInstance','$scope', '$state', 'Consultant'];

    function ConsultantController ( $uibModalInstance, $scope, $state, Consultant) {
        var vm = this;
        vm.consultants = [];
        vm.loadAll = function() {
            Consultant.query(function(result) {
                vm.consultants = result;
            });
        };

        vm.loadAll();

        vm.clearSearchDialog = function() {
            $uibModalInstance.dismiss('cancel');
        };

    }
})();

我收到以下错误:

angular.js:13294 Error: [$injector:unpr] Unknown provider: $uibModalInstanceProvider <- $uibModalInstance <- ConsultantController
http://errors.angularjs.org/1.5.2/$injector/unpr?p0=%24uibModalInstanceProvider%20%3C-%20%24uibModalInstance%20%3C-%20ConsultantController
    at http://localhost:8181/bower_components/angular/angular.js:68:12
    at http://localhost:8181/bower_components/angular/angular.js:4418:19
    at Object.getService [as get] (http://localhost:8181/bower_components/angular/angular.js:4571:39)
    at http://localhost:8181/bower_components/angular/angular.js:4423:45
    at getService (http://localhost:8181/bower_components/angular/angular.js:4571:39)
    at injectionArgs (http://localhost:8181/bower_components/angular/angular.js:4595:58)
    at Object.instantiate (http://localhost:8181/bower_components/angular/angular.js:4637:18)
    at $controller (http://localhost:8181/bower_components/angular/angular.js:9912:28)
    at http://localhost:8181/bower_components/angular-ui-router/release/angular-ui-router.js:4081:28
    at invokeLinkFn (http://localhost:8181/bower_components/angular/angular.js:9525:9) <div class="well ng-scope" ui-view="content">

但在我的项目中有几个具有此依赖关系的控制器。 我不明白为什么我在这个控制器上有这个错误。

[UPDATE]
app.js:

(function() {
    'use strict';

    angular
        .module('myApp', [
            'ngStorage', 
            'ngResource',
            'ngCookies',
            'ngAria',
            'ngCacheBuster',
            'ngFileUpload',
            'ui.bootstrap',
            'ui.bootstrap.datetimepicker',
            'ui.router',
            'infinite-scroll',
            'angular-loading-bar'
        ])
        .run(run);

    run.$inject = ['stateHandler'];

    function run(stateHandler) {
        stateHandler.initialize();
    }
})();

工作负责人:

(function() {
    'use strict';

    angular
        .module('myApp')
        .controller('ConsultantDeleteController',ConsultantDeleteController);

    ConsultantDeleteController.$inject = ['$uibModalInstance', 'entity', 'Consultant'];

    function ConsultantDeleteController($uibModalInstance, entity, Consultant) {
        var vm = this;
        vm.consultant = entity;
        vm.clear = function() {
            $uibModalInstance.dismiss('cancel');
        };
        vm.confirmDelete = function (id) {
            Consultant.delete({id: id},
                function () {
                    $uibModalInstance.close(true);
                });
        };
    }
})();

[更新2]

.state('consultant.search', {
            parent: 'consultant',
            url: '/search',
            data: {
                authorities: ['ROLE_USER']
            },
            onEnter: ['$stateParams', '$state', '$uibModal', function($stateParams, $state, $uibModal) {
                $uibModal.open({
                    templateUrl: 'app/entities/consultant/consultant-search-dialog.html',
                    controller: 'ConsultantController',
                    controllerAs: 'vm',
                    size: 'md',
                }).result.then(function() {
                    $state.go('consultant', null, { reload: true });
                }, function() {
                    $state.go('^');
                });
            }]
        });

0 个答案:

没有答案