未知提供商

时间:2016-05-10 19:22:21

标签: angularjs angular-providers

我在Web应用程序的AngularJS代码上遇到了一个非常奇怪的错误。

我有一个应用程序,它有一个用于在数据库中插入新数据的表单,但在此之前它会查找任何巧合。

现在,我们在数据库中插入的对象有一系列集合,如果它已经存在,应用程序将在UI上显示整个内容,用户可以在其中向集合中添加新项目

集合由实体组成,每个实体都有自己的视图,并且可以从导航栏菜单中独立访问它们,所以当我在表单中调用add new item方法时,它实际上是从前一个方法中回收的,这里很有趣部分

我在表单中完成了其中三个并且它们都工作正常,相同的视图显示,相同的功能,但是当我尝试使用第四个时,会出现此错误:

angular.js:13294 Error: [$injector:unpr] Unknown provider: pagingParamsProvider <- pagingParams <- TreatmentController2
http://errors.angularjs.org/1.5.2/$injector/unpr?p0=pagingParamsProvider%20%3C-%20pagingParams%20%3C-%20TreatmentController

现在,更有趣的是,我在控制器和视图中使用相同的代码,就像在单独的实体视图访问中使用的那样,但是当我从表单中执行它时,它将无法工作。 / p>

如果我删除了分页参数注入,它会加载视图,但当然它会丢失所有功能。

以下是代码:

控制器:

  (function() {
    'use strict';

    angular
        .module('vivaxDataManagerApp')
        .controller('TreatmentController', TreatmentController);

    TreatmentController.$inject = ['$scope', '$state', 'Treatment', 'TreatmentSearch', 'ParseLinks', 'AlertService', 'pagingParams', 'paginationConstants'];

    function TreatmentController ($scope, $state, Treatment, TreatmentSearch, ParseLinks, AlertService, pagingParams, paginationConstants) {
        var vm = this;
        vm.loadAll = loadAll;
        vm.loadPage = loadPage;
        vm.predicate = pagingParams.predicate;
        vm.reverse = pagingParams.ascending;
        vm.transition = transition;
        vm.clear = clear;
        vm.search = search;
        vm.searchQuery = pagingParams.search;
        vm.currentSearch = pagingParams.search;
        vm.loadAll();



         function loadAll () {
                if (pagingParams.search) {
                    TreatmentSearch.query({
                        query: pagingParams.search,
                        page: pagingParams.page - 1,
                        size: paginationConstants.itemsPerPage,
                        sort: sort()
                    }, onSuccess, onError);
                } else {
                    Treatment.query({
                        page: pagingParams.page - 1,
                        size: paginationConstants.itemsPerPage,
                        sort: sort()
                    }, onSuccess, onError);
                }
                function sort() {
                    var result = [vm.predicate + ',' + (vm.reverse ? 'asc' : 'desc')];
                    if (vm.predicate !== 'id') {
                        result.push('id');
                    }
                    return result;
                }
                function onSuccess(data, headers) {
                    vm.links = ParseLinks.parse(headers('link'));
                    vm.totalItems = headers('X-Total-Count');
                    vm.queryCount = vm.totalItems;
                    vm.treatments = data;
                    vm.page = pagingParams.page;
                }
                function onError(error) {
                    AlertService.error(error.data.message);
                }
            }

            function loadPage (page) {
                vm.page = page;
                vm.transition();
            }

            function transition () {
                $state.transitionTo($state.$current, {
                    page: vm.page,
                    sort: vm.predicate + ',' + (vm.reverse ? 'asc' : 'desc'),
                    search: vm.currentSearch
                });
            }

            function search (searchQuery) {
                if (!searchQuery){
                    return vm.clear();
                }
                vm.links = null;
                vm.page = 1;
                vm.predicate = '_score';
                vm.reverse = false;
                vm.currentSearch = searchQuery;
                vm.transition();
            }

            function clear () {
                vm.links = null;
                vm.page = 1;
                vm.predicate = 'id';
                vm.reverse = true;
                vm.currentSearch = null;
                vm.transition();
            }

        }
    })();

来自HTML代码的调用:

<div class="form-group-row">
            <label class="col-md-2 form-control-label">Insert new Treatment:</label>
            <div class="col-md-2">
                <a class="btn btn-success" ng-click="newTreatment()">
                    <span class="glyphicon glyphicon-plus"/>
                </a>
            </div>
        </div>

表单控制器中的函数:

 $scope.newTreatment = function () {
                $scope.myHidingValue=true;
                $uibModal.open({
                    templateUrl: 'app/entities/treatment/treatment-dialog.html',
                    controller: 'TreatmentController',
                    size: 'lg',
                    controllerAs: 'vm',
                    backdrop: 'static',
                    resolve: {
                        entity: function () {
                            return {};
                        }
                    }
                }).result.then(function (result) {
                    $scope.publi = result;
                }, function () {
                })
            };

我只发布我认为最相关的代码,因为我在这个项目中有数千行,但如果有必要,我不介意发布更多代码

提前谢谢大家

史蒂芬

1 个答案:

答案 0 :(得分:0)

Mistery解决了,问题是我没有使用正确的控制器,我应该使用TreatmentDialogController,我有TreatmentController,对我感到羞耻,我知道。

感谢The Head Rush带领我朝着正确的方向前进!