我使用的是AngularJS,我需要您的幫助來在用戶登錄後更新HTML的內容。 事實上,當我加載頁面時,HTML只加載控制器一次,用戶尚未記錄。但登錄後HTML不刷新頁面,顯示用戶的登錄名?我該如何解決這個問題。 下面是我的HTML綁定不會在angularjs中刷新
<section class="hero hero-1 hero-small" ng-controller="HomeController">
<header class="navbar" role="navigation">
<div class="container" ng-controller="UserController">
{{username}}
<nav>
<a class="navbar--logo" ui-sref="home">EspritAcademy</a>
</nav>
<nav>
<ul class="navbar--list pull-right">
<li class="navbar--list-item"><a ui-sref="#">Features</a></li>
<li class="navbar--list-item"><a ui-sref="#">Courses</a></li>
<li class="navbar--list-item" ng-hide="isLoggedIn()"><a
ui-sref="login">Sign in</a></li>
<li class="navbar--list-item dropdown"
ng-controller="DropdownCtrl" dropdown is-open="status.isopen"
ng-show="isLoggedIn()"><a ui-sref="#"
class="dropdown-toggle" data-toggle="dropdown" dropdown-toggle
ng-disabled="disabled"> <b>{{username}}</b><b class="caret"></b>
</a>
<ul class="dropdown-menu" style="left: inherit; right: 0;">
<li><a ui-sref="#">My Profile</a></li>
<li><a ui-sref="#">Account Settings</a></li>
<li ng-click="logout()"><a ui-sref="home">Logout</a></li>
</ul></li>
<!-- <li class="navbar--list-item" ng-click="logout()"
ng-show="isLoggedIn()"><a ui-sref="home">Déconnexion</a></li> -->
<li class="navbar--list-item" ng-hide="isLoggedIn()"><a
class="rounded-button blue-button" ui-sref="register">Start
learning</a></li>
</ul>
</nav>
</div>
</header>
</section>
和我的控制器:
controller(
"HomeController",
function HomeController($scope, sessionService) {
$scope.isLoggedIn = sessionService.isLoggedIn;
$scope.logout = sessionService.logout;
}).controller(
"UserController",
function UserController($scope, accountService) {
console.log("Hello");
var loggedUser = {};
loggedUser = accountService.getuser();
if ((loggedUser)) {
$scope.username = loggedUser.username;
console.log("username : ", $scope.username);
}
}).controller('DropdownCtrl',
function($scope, $log) {
$scope.status = {
isopen : false
};
$scope.toggled = function(open) {
};
});
,我現在面臨
問題是與顯示器{{名}}。下面的 是用於使用Java後端的休息技術獲取用戶詳細信息的工廠。
factory(
'accountService',
function($resource, sessionService) {
var service = {};
service.register = function(account, profile, success,
failure) {
if (profile.id == 1) {
var Account = $resource("/rest/account");
Account.save({}, account, success, failure);
} else {
var Account = $resource("/rest/account/teacher");
Account.save({}, account, success, failure);
}
};
service.userExists = function(account, success, failure) {
var Account = $resource("/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() {
return service.data;
};
return service;
})
我不需要繼續刷新我的頁面我只需要在用戶登錄後才加載UserController。用ng-if或其他方法可以嗎?
請出示'accountService.getuser()'代碼。你的'如果(loggedUser)'是造成這個問題,但會幫助看到'getuser()'返回什麼 – charlietfl
@charlietfl我不認爲這個問題可能與accoutService.getuser有關,因爲我沒有問題顯示用戶名相同的控制器,但在登錄後加載的其他屏幕中。 –
但它當然是當你只設置'$ scope.username'時,如果它沒有用'username屬性返回一個對象。然後,當你更新'getuser()'中的對象時,沒有什麼可以綁定到控制器上。 – charlietfl