2016-10-03 35 views
0

假设我有一个导航栏,它在登录后显示个人资料图片。 我正在使用Auth0的锁,它在localStorage中设置用户配置文件。 img-src来自localStorage。如何停止浏览器在AngularJS中无法加载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(这是不可用的,因为他们没” t登录),所以微调永远不会停止,除非登录。 如何解决此问题?

+0

不工作? 'if(angular.isDefined(accessData)){//你的代码}' – Matheno

回答

0

使用简单的条件。如果一个密钥不存在,getItem()将返回null

var accessData = localStorage.getItem('profile'); 
if(accessData){ 
    lgin.profile = angular.fromJson(accessData); 
} 
+0

我已经试过了。它应该工作,可悲的是,它没有。 –

+1

请注意,您应该始终使用'ng-src'来避免浏览器对图像做出错误的请求。真的不知道你在说什么微调。创建一个演示,重现问题 – charlietfl

+0

ng-src真的纠正了这个问题。非常感谢。 –

相关问题