我在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 () {
})
};
我只发布我认为最相关的代码,因为我在这个项目中有数千行,但如果有必要,我不介意发布更多的代码
提前感谢大家
Steven
错误解决了,问题是我没有使用正确的控制器,我本应该使用TreatmentDialogController,我有TreatmentController,我知道我很惭愧。
感谢The Head Rush带领我朝着正确的方向前进!