AngularJS 中不可用时如何停止浏览器加载 localStorage 项目
How to stop browser loading localStorage Item when it's not available in AngularJS
假设我有一个导航栏,它在登录后显示个人资料图片。
我正在使用 Auth0 的锁,它在 localStorage 中设置用户配置文件。 img-src 来自 localStorage.
NavbarView.html
<li ng-if="!lgin.isAuthenticated"><a ng-click="lgin.authService.login()">Sign in</a></li>
<li ng-if="lgin.isAuthenticated" class="dropdown">
<a href="" class="dropdown-toggle" data-toggle="dropdown">
<strong>{{lgin.profile.name}}</strong>
<img src="{{lgin.profile.picture}}" alt="{{lgin.profile.name}}">
<span class="caret"></span></a>
loginController.js
var lgin = this;
lgin.isAuthenticated = $rootScope.isAuthenticated;
var accessData = localStorage.getItem('profile');
lgin.profile = angular.fromJson(accessData);
当用户进入主页时,浏览器一直在寻找 lgin.profile.picture(不可用,因为他们还没有登录),所以旋转器永远不会停止,除非登录。
如何纠正?
使用简单的条件。如果键不存在,getItem()
将 return 为 null
var accessData = localStorage.getItem('profile');
if(accessData ){
lgin.profile = angular.fromJson(accessData);
}
假设我有一个导航栏,它在登录后显示个人资料图片。 我正在使用 Auth0 的锁,它在 localStorage 中设置用户配置文件。 img-src 来自 localStorage.
NavbarView.html
<li ng-if="!lgin.isAuthenticated"><a ng-click="lgin.authService.login()">Sign in</a></li>
<li ng-if="lgin.isAuthenticated" class="dropdown">
<a href="" class="dropdown-toggle" data-toggle="dropdown">
<strong>{{lgin.profile.name}}</strong>
<img src="{{lgin.profile.picture}}" alt="{{lgin.profile.name}}">
<span class="caret"></span></a>
loginController.js
var lgin = this;
lgin.isAuthenticated = $rootScope.isAuthenticated;
var accessData = localStorage.getItem('profile');
lgin.profile = angular.fromJson(accessData);
当用户进入主页时,浏览器一直在寻找 lgin.profile.picture(不可用,因为他们还没有登录),所以旋转器永远不会停止,除非登录。 如何纠正?
使用简单的条件。如果键不存在,getItem()
将 return 为 null
var accessData = localStorage.getItem('profile');
if(accessData ){
lgin.profile = angular.fromJson(accessData);
}