2017-10-05 10 views
0

を保持しません。AngularJSの工場は、私は私のAuthServiceから値を格納するための簡単な工場を作成している値

mgr.getUser().then(function (user) { 
     if (user) { 
      var idToken = user.id_token; 
      var dataIdToken = getDataFromToken(idToken); 
      subfactory.set(dataIdToken.sub); 
     } else { 
      //console.log("User not logged in"); 
     } 
    }); 

をしかし、私がしようとすると、コントローラ内のオブジェクトを読み出すときには空です::私はsubfactory.set()を使用して値を保存しています

vm.onGridLoad = function() { 

     var storedValue = subfactory.get(); 

     console.log(storedValue); 

答えて

1

の使用return私は別の方法で工場を書きますが、それは私だけです。

app.factory("subfactory", 
     function() { 

      var service = {}; 
      service.subValue = {}; 

      service.save = save; 

      return service; 

      function save(value) { 
       service.subValue = value; 
      } 
     }); 

次に、必要なコントローラーを工場に注入します。 サービスオブジェクトを返すときにgetメソッドを呼び出す必要はなく、単純にservice.subValueを使用して値を取り戻すことができます。あなたが好きではない場合は、好みに応じて自由に変更してください。

コードはテストされていませんが、問題を解決するのに十分近いはずです。

あなたはどのような角度のアプリを持っているのかを指定していませんが、それはスパですか?最初の保存後にページをリロードしますか?たとえば、別のページに移動するときのようにページをリロードすると、JavaScriptがリロードされ、工場で保存された状態が失われます。その場合は、保存したいものをlocalStorageのようなものに保存することができます。

0

あなたのサービス

function get() 
{ 
return mgr.getUser().then(function (user) { 
     if (user) { 
      var idToken = user.id_token; 
      var dataIdToken = getDataFromToken(idToken); 
      subfactory.set(dataIdToken.sub); 
     } else { 
      //console.log("User not logged in"); 
     } 
    }); 
} 
関連する問題