2017-10-30 5 views
1

私はディレクティブからfactoryを呼び出していますが、ページをリロードした後にスコープは保持されません。私は自分のアプリケーションでログインしても正常に動作していますが、ページをリロードするとスコープは失われます。私は私の指示と工場コードを共有しています。ディレクティブは、Angular Jsでページをリロードした後で工場を呼び出せませんか?

指令

"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> 

I putteコンソールのdデバッガ。
enter image description here

をリロードせずに enter image description here

をリロードした後、私は値を保持します。ページUser.initialized.then(関数(){それは未定義 なっているをリロードした後

私は1つのリンクretain angular variables after page refreshを見てきました、しかし、私は私の問題を解決することはできませんよ

答えて

0

ページのリロード後に何かを保持する場合は、ピクチャ値である場合は、ローカルストレージを使用することをお勧めします。ログアウトすると、ローカルストレージをクリアできます。

ページがリロードされると、その値がローカルストレージに存在するかどうかをチェックします。または、ネットワーク要求からフェッチします。

https://stackoverflow.com/a/26118991/4861453

関連する問題