我正在使用Auth0,它允许我在登录完成后检索用户个人资料信息,如下所示:
<span>Name is {{auth.profile.nickname}}</span>
// UserInfoCtrl.js
function UserInfoCtrl($scope, auth) {
$scope.auth = auth;
}
我想要做的是使用ng-show和ng-hide仅在用户登录后显示内容。其他人如何实现这一目标?我在我的UserInfoCtrl.js中设想类似于条件语句的东西,例如:
if($scope.auth !== null) {
$scope.loggedin
}
更新:根据关于falselys的评论以及$ scope.auth提供了一些值,也许最好将某些东西绑定到Login控制器。有什么想法吗?
// Login and logout functionality
pfcControllers.controller('loginCtrl', ['$scope', 'auth', '$location', 'store', function ($scope, auth, $location, store) {
$scope.login = function () {
auth.signin({}, function (profile, token) {
store.set('profile', profile);
store.set('token', token);
$location.path("/");
}, function (error) {
console.log("There was an error logging in", error);
});
}
$scope.logout = function () {
auth.signout();
store.remove('profile');
store.remove('token');
$location.path('/login');
}
}]);
答案 0 :(得分:4)
如果$scope.auth
仅在用户登录时才有值,则可以执行以下操作:
<span ng-show="auth">Name is {{auth.profile.nickname}}</span>
这样,只有在span
被定义的情况下,您才会看到auth
。
答案 1 :(得分:4)
出于安全考虑,我认为您的服务器只应在用户登录时发送已记录区域的内容。
但是,如果出于某种原因,您希望对记录区域进行此控制,则可以选择其他方法:
ng-show和ng-if都接收表达式,引用为here。
尝试做:
答案 2 :(得分:1)
最简单的方法是将它放在您的视图代码中:
<div ng-show='auth'></div>
现在,这不是最好的做法,我建议你使用令牌,here是关于角度的令牌发布
请注意: 这不是一个有效的JS语法:
if($scope.auth is not null {
$scope.loggedin
}
改为使用:
if($scope.auth != null) {
$scope.loggedin
}