我使用的是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