我从指令调用工厂,但重新加载页面后范围不会持久化。当我使用我的应用程序登录时,它工作正常,但是当我重新加载页面时,范围丢失了。我正在分享我的指令和工厂代码。
指令
"use strict";
angular.module('app.auth').directive('loginInfo', function(User){
return {
restrict: 'A',
templateUrl: 'app/auth/directives/login.tpl.html',
link: function(scope, element){
User.initialized.then(function(){
scope.user = User
});
}
}
})
工厂
'use strict';
angular.module('app').factory('User', function ($http, $q, APP_CONFIG,Rh,$rootScope,RhAuth,$location) {
var dfd = $q.defer();
var UserModel = {
initialized: dfd.promise,
username: undefined,
picture: undefined,
};
UserModel.getInfo=function(){
Rh.one('userbase/users/'+RhAuth.getUserid()).get().then(function(response)
{
UserModel.username = response.username;
UserModel.picture= response.avatar;
dfd.resolve(UserModel)
},
function (error){
dfd.resolve(error);
});
}
return UserModel;
});
login.tpl.html
<div class="login-info">
<span>
<a href="" >
<img ng-src="{{user.picture}}" alt="me" class="online">
</a>
</span>
</div>
我想坚持图片价值。
重新加载页面后 User.initialized.then(function(){它会变成 未定义。
我看过一个链接retain angular variables after page refresh,但我无法解决我的问题。请分享你的想法。
答案 0 :(得分:0)
为了在页面重新加载后保留任何内容,并且在您的情况下是图片值,最好的选择是使用本地存储,在注销时您可以清除本地存储。
在页面重新加载时检查该值是否存在于本地存储中,或者是否从网络请求中获取。