因此,基本上我使用$ routeProvider中的resolve來獲取當前用戶的信息,然後實例化控制器。 這是我要做的事:路由時未能正確解析Promise
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'};
這個功能就好了..我知道它不是一個承諾,但這樣做的目的理智..
的錯誤任何線索?
對不起,您可以擴展一下嗎?如果我刪除了返回語句,我該如何訪問它? var currUser = myUser會工作嗎? –
你的解決方法必須返回一個承諾。 '$ http'方法返回一個承諾。 –
嗨,我仍然不確定如何使用由$ http返回的承諾,整點就是獲取當前用戶。我假設currUser = myUser會允許我使用$ http調用返回的對象。但myUser未定義.. –