У меня есть всплывающее окно входа в систему и сброс пароля на главной странице. когда я нажимаю кнопку входа в систему, я получаю успех, после успеха я вызываю запрос пользователя api в случае успешного обратного вызова, поэтому я получаю детали пользователя в шаблоне после успешного входа в систему, поэтому он будет загружать имя пользователя в html-шаблоне, но не из всплывающее окно сброса пароля.
в всплывающем окне «Сброс пароля», у меня есть кнопка входа в систему, после успешного сбрасывания пароля. после нажатия кнопки входа в систему, я получаю успех, консольный интерфейс callback внутри. Поскольку я вызываю запрос пользователя api на успех, я также получаю информацию о пользователе в console.log. Но детали пользователя не загружаются в html-шаблон. но после перезагрузки страницы я получаю детали пользователя в шаблоне html. Я получаю информацию о пользователе, без перезагрузки непосредственно в окне входа. но не когда я сброшу пароль и логин.
У меня есть маршрут, как этот
Данные области не загружаются в html-шаблоне в angularjs
.state('resetPassword', {
url: '/home/reset_password',
templateUrl: 'home/home.html',
controller: 'HomeController',
controllerAs: 'vm',
data: {
requireLogin: false
}
})
// UI Router Login
.state('login', {
url: '/login',
templateUrl: 'login/uirouterlogin.html',
controllerAs: 'vm',
data: {
requireLogin: false
}
})
код контроллера
через шаблон для параметров я просто проходящими шаблон ResetPassword и шаблон для входа. на основе которого нажата кнопка.
$scope.showLogin = function(e, template) {
console.log(template);
var modalInstance = $uibModal.open({
animation: true,
templateUrl: 'login/' + template + '.html',
'controllerAs': 'login',
controller: function($uibModalInstance, $scope, logIn) {
$scope.modalClose = function() {
$uibModalInstance.dismiss('Close');
};
$scope.loginUser = function(existinguser) {
$scope.loginLoading = true;
logIn.getlogIn(existinguser)
.then(function(success) {
$state.reload();
$uibModalInstance.dismiss('Close');
getApi(); //to get the user details.
cartReload();
$scope.loginLoading = false;
console.log(success.data);
$login.getLoginRedirect();
$authentication.setAuthKey("key");
$scope.loginupError = false;
}, function(error) {
$scope.loginLoading = false;
console.log("Login Failed");
$scope.loginError = true;
if (error.data) {
$scope.loginErrorMsg = error.data.message;
} else {
$scope.loginErrorMsg = "Error connection, Please try again";
}
$timeout(function() {
$scope.loginError = false;
}, 4000);
})
};
* сброс пароля всплывающее окно будет на странице загрузки появляется, чтобы получить, что всплывающие окна я делаю так *
$rootScope.$on('$stateChangeSuccess',
function(event, toState, toParams, fromState, fromParams) {
if (toState.name === 'resetPassword') {
$scope.showLogin('$event', 'resetpassword');
}
$scope.home_state = toState.name;
}
)
HTML
<li ng-if="!user"><a ng-click="showLogin($event,'login')">LOGIN</a></li>
<li ng-if="user">user.name</li>
, не проблема, я задаю данные успеха, я получаю информацию о пользователе , при прямом входе в систему на домашней странице, но не после сброса пароля -> успех входа в систему, я использую ту же функцию. no dfferent function – codelearner
Хорошо, тогда определите пустую модель пользователя. После успешного входа в систему отожмите userdata в эту модель и привяжите ее к представлению, вот и все. За этим подходом следуют почти все хорошие разработчики. –