1

我在 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

现在,更有趣的是,我为控制器和视图使用了与在单独的实体视图访问中使用的代码相同的代码,但是当我从表单中执行此操作时,它将不起作用。

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

这是代码:

控制器:

  (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 () {
                })
            };

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

谢谢大家

史蒂文

4

1 回答 1

0

谜团解决了,问题是我没有使用正确的控制器,我应该有 TreatmentDialogController,我有 TreatmentController,我知道,真丢脸。

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

于 2016-05-11T09:07:06.987 回答