не помогло бы мне обновить мой контроллер, чтобы изменить имя пользователя при входе пользователя в систему. проблема, с которой я столкнулся, заключается в том, что даже после обновления пользователя имя пользователя всегда пусто. Не могли бы вы помочь мне исправить это? вот мой контроллеротображение подключенного пользователя после входа в систему
controller(
"HomeController",
function HomeController($scope, sessionService, accountService) {
var loggedUSer = {};
loggedUSer = accountService.getuser();
if (angular.isDefined(loggedUSer))
$scope.username = loggedUSer.username;
$scope.isLoggedIn = sessionService.isLoggedIn;
$scope.logout = sessionService.logout;
})
и отображается имя пользователя здесь после вызова контроллера
<b>{{username}}</b>
Когда я загружаю мою веб-страницу в поле Имя пользователя пуст, и всегда отображается пустым, даже если имя пользователя является заполняется после входа пользователя в систему. Ineed, чтобы изменить это, чтобы отобразить подключенного пользователя.
ниже завод используется для извлечения пользователя и входа в систему:
factory(
'sessionService',
function($http) {
var session = {};
session.login = function(data) {
return $http
.post(
"/myapp/login",
"username=" + data.username
+ "&password=" + data.password,
{
headers : {
'Content-Type' : 'application/x-www-form-urlencoded'
}
})
.then(
session.LoggIn = function(data) {
alert("login successful");
localStorage.setItem("session", {});
console
.log(
"localStorage after login: ",
localStorage);
console.log(
"session after login: ",
session);
console.log("data after login: ",
data);
}, function(data) {
alert("error logging in");
});
};
session.logout = function() {
localStorage.removeItem("session");
};
session.isLoggedIn = function() {
return localStorage.getItem("session") !== null;
};
return session;
})
и
factory(
'accountService',
function($resource, sessionService) {
var service = {};
service.register = function(account, profile, success,
failure) {
if (profile.id == 1) {
var Account = $resource("/myapp/rest/account");
Account.save({}, account, success, failure);
} else {
var Account = $resource("/myapp/rest/account/teacher");
Account.save({}, account, success, failure);
}
};
service.userExists = function(account, success, failure) {
var Account = $resource("/myapp/rest/account");
var data = Account.get({
username : account.username,
password : account.password
}, function() {
console.log("user details : ", data);
var accounts = data.username;
if (accounts && accounts.length !== 0) {
console
.log("profile id :",
data.userProfile.id);
service.data = data;
success(account);
} else {
failure();
}
}, failure);
};
service.getuser = function() {
if (service.data){
console.log (service.data);
return service.data;
}
else {
sessionService.logout();
}
};
return service;
}).controller(
"LoginController",
function($scope, sessionService, accountService, $state) {
$scope.login = function() {
accountService.userExists($scope.account, function(
account) {
sessionService.login($scope.account).then(
function() {
$state.go("home");
});
}, function() {
alert("Error logging in user");
});
};
})
Что делать, если вы инициализируете $ scope.username 'uninitialized'? Затем вы можете определить, является ли это рендеринг или проблема с моделью/данными. Возможно, также добавьте ветку else в оператор, установив «undefined», чтобы проверить, выполнена ли логика. – Pieter21
Выполняется ли регистрация после создания контроллера? – martinoss
попробуйте использовать '$ rootScope' вместо' $ scope'. Он будет продолжать использовать имя пользователя в приложении. – batmaniac7