【发布时间】:2015-03-17 14:08:57
【问题描述】:
我想在加载应用程序的第一页之前解析一些值,但它一直告诉我
未知提供者:programClassSummaryProvider
我很确定我做对了,因为我对任何其他控制器和路由都做了同样的事情。但它不适用于我的主页控制器。 似乎它首先加载控制器,然后在路由中解决它。我的代码有什么问题吗?
在routing.js中
$stateProvider
.state('home', {
url: '/home',
controller: 'HomeCtrl',
controllerAs: 'vm',
templateUrl: 'index_main.html',
resolve: {
programClassSummary: ['GroupDataFactory', function (groupDf) {
return groupDf.getProgramClassSummary();
}]
},
ncyBreadcrumb: {
skip: true
}
});
在 controller.js 中
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();
}
}
在 factory.js 中
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;
})
}
【问题讨论】:
-
如果控制器在解析发生之前被加载,您可能会加载控制器两次(例如通过在 HTML 中使用
ng-controller)。 -
你说的完全正确!!!
标签: angularjs angular-ui-router