Angularjs ui路由器解析无法与索引页控制器一起使用
我想在加载应用程序的第一页之前解析一些值,但它一直告诉我Angularjs ui路由器解析无法与索引页控制器一起使用,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我想在加载应用程序的第一页之前解析一些值,但它一直告诉我 未知提供者:programClassSummaryProvider我想说,我们真的必须区分UI路由器状态世界和角度本身。此处明确定义的原因(摘自): resolve(发票、本地人、家长、自己) 解析一组电缆。invocable是通过$injector.invoke()调用的函数,可以具有任意数量的依赖项。invocable可以直接返回值,也可以返回$q承诺。如果一个承诺被返回,它将被解析,结果值将被使用。已解决Invocales的依赖关系
未知提供者:programClassSummaryProvider我想说,我们真的必须区分
UI路由器
状态世界和角度本身。此处明确定义的原因(摘自):
resolve(发票、本地人、家长、自己)
解析一组电缆。invocable是通过$injector.invoke()
调用的函数,可以具有任意数量的依赖项。invocable可以直接返回值,也可以返回$q
承诺。如果一个承诺被返回,它将被解析,结果值将被使用。已解决Invocales的依赖关系(按此优先顺序)
- 从指定的局部变量
- 来自此$resolve调用的另一个invocable
- 从父调用$resolve(或递归调用)继承的invocable
- 从该父级的任何祖先(解析)
在中检查它,如果在解析发生之前加载控制器,则可能会加载控制器两次(例如,在HTML中使用
ng controller
),您完全正确!!!
$stateProvider
.state('home', {
url: '/home',
controller: 'HomeCtrl',
controllerAs: 'vm',
templateUrl: 'index_main.html',
resolve: {
programClassSummary: ['GroupDataFactory', function (groupDf) {
return groupDf.getProgramClassSummary();
}]
},
ncyBreadcrumb: {
skip: true
}
});
angular
.module('issMccApp')
.controller('HomeCtrl', homeCtrl);
homeCtrl.$inject = ['$scope', '$location', '$state', '$auth', 'programClassSummary'];
/* @ngInject */
function homeCtrl($scope, $location, $state, $auth, programClassSummary) {
var vm = this;
vm.isAuthenticated = isAuthenticated;
vm.programClassSummary = programClassSummary;
if (!$auth.isAuthenticated()) {
$state.go('login');
return;
}
function isAuthenticated() {
return $auth.isAuthenticated();
}
}
function getProgramClassSummary(showAll) {
var query = "";
if (showAll)
query = APIConfigObj.base_url + '/api/group/infor/programclasssummary?all=1';
else
query = APIConfigObj.base_url + '/api/group/infor/programclasssummary';
return $http.get(query)
.success(function (result) {
return result;
})
.error(function (err) {
return err;
})
}
<body ng-controller="RootCtrl">
a summary for a root:
<pre>{{summary}}</pre>
<ul>
<li><a href="#/home">home</a>
<li><a href="#/other">other</a>
</ul>
<div ui-view=""></div>
.controller('RootCtrl', ['$scope', 'GroupDataFactory', function ($scope, groupDf) {
$scope.summary = groupDf.getProgramClassSummary();
}])
.state('home', {
url: "/home",
templateUrl: 'tpl.home.html',
resolve: {
programClassSummary: ['GroupDataFactory', function (groupDf) {
return groupDf.getProgramClassSummary();
}]
},
controller: 'HomeCtrl',
})
.controller('HomeCtrl', ['$scope', 'programClassSummary', function ($scope, summary) {
$scope.summaryForHome = summary;
}])