![](/img/trans.png)
[英]AngularJS scope variables not updating in jQuery promise/deferred
[英]Angularjs 1.3.15 - Updating $scope after Promise Returned
我正在學習angularjs,並嘗試在登錄后使用用戶名更新導航欄,但是用戶名沒有出現。 這是我正在遵循的過程:
這是Nav Bar的HTML(不確定是否重要,但是在頁面加載時使用ng-include將其放入index.html中):
<nav ng-controller="menuController">
<div class="navbar-header">
<a class="navbar-brand" href="index.html">
Admin Site
</a>
</div>
<ul >
<li ><span>Welcome {{ user.firstName }}</span></li>
</ul>
</div>
</nav>
這是menuController js文件:
angular
.module('myApp')
.controller("menuController", ['$scope', '$auth', '$timeout', '$window', 'toaster', 'Account',
function UserCtrl($scope, $auth, $timeout, $window, toaster, Account) {
$scope.user = [];
$scope.login = function () {
$auth.login({email: $scope.email, password: $scope.password})
.then(function(response){
toaster.pop('success', "Logged In", "You have successfully logged into the system"); // This fires correctly
Account.getProfile()
.success(function(obj){
$scope.user = obj;
console.log('User: ' +
$scope.user.firstName); //This Works! But user.firstName in HTML is not updated
});
})
.catch(function (response) {
toaster.pop('error', "Login Failure", response.data.message);
})
};
}
]);
來自index.html的HTML
<div id="wrapper">
<div ng-include='"templates/navigation.html"'></div>
<div ng-view></div>
</div>
<!-- /#wrapper -->
問題是導航欄中的user.firstName永遠不會更新為用戶的名字。 我想念什么嗎?
感謝您的任何幫助!
Account.getProfile()
返回什么? 它是有角度的承諾還是在有角度的框架之外的東西? 也許您應該將代碼包裝在$apply
范圍內:
Account.getProfile()
.success(function(obj){
$scope.$apply(function() {
$scope.user = obj;
console.log('User: ' +
$scope.user.firstName); //This Works! But user.firstName in HTML is not updated
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.