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