【发布时间】:2015-09-23 12:06:05
【问题描述】:
我正在构建一个 Angular 应用程序并使用 cookie 设置值,以便在页面刷新发生时持久性应该存在,即如果我已登录,我应该看到配置文件和注销页面,如果我没有登录,我应该请参阅注册/登录页面。 这是代码。
app.controller("NavCntrl", function($scope, $http, $rootScope, $location, $cookies)
{
$scope.logout = function()
{
console.log("Logout");
//$rootScope.currentUser=undefined;
$cookies.put('loggedIn', "");
//$location.url('/home');
}
$scope.loggedIn = $cookies.get('loggedIn');
if($scope.loggedIn == "true")
{
$scope.loggedOut = "";
}
else
{
$scope.loggedOut = "true";
}
});
html 看起来如下
<nav ng-controller ="NavCntrl" class="navbar navbar-default" >
<div >
<a href="/home" class="navbar-brand" >Home</a>
<span ng-show = "loggedOut">
<a href="/login" class="navbar-brand" >Login</a>
<a href="/register" class="navbar-brand">Register</a>
</span>
<span ng-show = "loggedIn">
<a href="/logout" ng-click=logout() class="navbar-brand">Logout</a>
<a href="/profile" class="navbar-brand">Profile</a>
</span>
</div>
</nav>
现在每当我登录时,我都会设置这个$cookies.put("loggedIn", true);
我在调试 Angular 时看到的行为是,有时被评估的值是正确的,但 HTML 没有得到如下更新。 我在考虑我对真实表达的理解是错误的。 什么使表达式被设置为真? 正如我在示例中看到的,有些人只是将其等同于空白字符串以认为它是假的,或者有时他们给出布尔值? 如何纠正我的应用程序的行为?。
【问题讨论】:
-
在 js 中符合条件的相同表达式,在 angularJS 中也符合条件。请记住:AngularJS 表达式只是 Javascript 表达式。这能回答你的问题吗?
标签: javascript angularjs cookies