gpt4 book ai didi

javascript - Angularjs 1.3.15 - 在 Promise 返回后更新 $scope

转载 作者:行者123 更新时间:2023-11-28 07:24:19 24 4
gpt4 key购买 nike

我正在学习 angularjs 并尝试在登录后使用用户名更新导航栏,但用户名没有出现。这是我遵循的过程:

  1. 用户登录成功。
  2. 在登录 promise 中的“then”之后(以确保返回 promise ),通过返回用户个人资料的工厂获取用户个人资料。
  3. “成功”获取用户个人资料后,将个人资料保存到 $scope.user 以便更新 DOM。

这是导航栏的 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() 返回什么?是 Angular promise 还是 Angular 框架之外的东西?也许您应该将代码包装在 $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
});
});

关于javascript - Angularjs 1.3.15 - 在 Promise 返回后更新 $scope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29867260/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com