Reputation: 341
I am working on an app to allow users to login with different level or access to an application. I added a resolve dependencies to get the list of users. It did return a list of correct users. How do I pass this object to the controller? I follow a similar example on the website, but my getPrelogin object is always undefined. What did I do wrong?
.state('registration.login', {
url: '/Login',
resolve: {
preLoginFactory: 'preLoginFactory',
getPrelogin: function (preLoginFactory) {
var result = preLoginFactory();
result.then(function (result) {
return result.data.Model.IntroMessage;
})
}
},
views: {
"content@": {
templateUrl: '/Account/Login',
controller: function ($scope, $stateParams, $location, LoginFactory, getPrelogin, preLoginFactory) {
console.log('the value of get pre login')
console.log(getPrelogin);
$scope.introMessage = getPrelogin;
$scope.loginForm = {
emailAddress: '',
password: '',
rememberMe: false,
returnUrl: $stateParams.returnUrl,
loginFailure: false
};
$scope.login = function () {
var result = LoginFactory($scope.loginForm.emailAddress, $scope.loginForm.password, $scope.loginForm.rememberMe);
result.then(function (result) {
if (result.success) {
if ($location.loginForm.returnUrl !== 'undefined') {
$location.path('/routeOne');
} else {
$location.path($scope.loginForm.returnUrl);
}
} else {
$scope.loginForm.loginFailure = true;
}
});
};
}//"LoginController"
}
}
})
Upvotes: 1
Views: 630
Reputation: 136144
Your resolve object getPrelogin
should return result
variable, because promise preLoginFactory
factory does return promise object. By injecting getPrelogin
inside controller you would directly get data returned from getPrelogin
which is result.data.Model.IntroMessage
.
Code
resolve: {
preLoginFactory: 'preLoginFactory',
getPrelogin: function(preLoginFactory) {
var result = preLoginFactory();
return result.then(function(response) {
return response.data.Model.IntroMessage;
})
}
},
Upvotes: 1
Reputation: 2425
You must return your promise:
getPrelogin: function (preLoginFactory) {
var result = preLoginFactory();
return result.then(function (result) {
return result.data.Model.IntroMessage;
})
}
Upvotes: 1