所以基本上我在$ routeProvider中使用resolve以便在我实例化控制器之前获取当前用户的信息 . 我是这样做的:
userMan.config(['$routeProvider', function ($routeProvider) {
$routeProvider.when('/userManagement', {
templateUrl: 'userManagement/userManagement.html',
controller: 'userManCtrl',
resolve: {
myUser:function($http){
console.log("I am about to make the call");
$http.get("/irods-cloud-backend/searchByMetadata/getCurrentUser").then( function( result ) {
console.log(result.data);
return result.data;
},
function( result ) {
alert("Unable to find any users! Please try again...");
})
}
}
});
}]);
我的控制器看起来像这样:
userMan.controller('userManCtrl', ['$scope', '$log', '$http', '$location', 'myUser',
function($scope, $log, $http, $location, myUser){
var currUser = myUser;
基本上我的错误是currUser未定义 . 这可以防止我检查用户的权限等 . 我也用过:
$scope.$on('$routeChangeSuccess',function(event, current){
alert("loaded!!");
});
要查看此承诺何时解决,但我在加载到选项卡后立即看到警报消息 . 然后我尝试使用虚拟返回对象
return { someAttr: 'val'};
这个功能很好..我知道它不是一个承诺,但出于理智的目的而做了..
有错误的任何线索?
2 回答
你不能等待,但是
undefined
. 正如@JoelCDoyle评论的那样:在@JoelCDoyle和@baao的反馈之后,我采用了不同的方法 . 我只是创建了一个处理GET请求的服务,并在我的决心中使用了它 . 有关这方面的更多信息,请查看here