2017-02-17 7 views
0

ログアウト時にユーザー値をnullに設定できない理由を理解していらっしゃいました。私は、グローバルにアクセスするようにユーザー情報を設定する方法を持っています。後でユーザー情報を取得するgetメソッドがありますが、以前のユーザーデータにログインしているユーザーに関係なく、ログアウト時に設定されたユーザー情報を削除する

これは私の現在のサービス・コントローラです:私は呼んにしようとしています

.factory('UserInfo', [function() { 
    var user; 
    return { 
     get: function(){ 
     return user; 
     }, 
     set: function(userInfo){ 
     user = userInfo; 
     }, 
     remove :function(){ 
     user = null; 
     return user; 
     } 
    }; 
    } 
]) 
.factory('Authentication',['UserInfo',function(UserInfo){ 
    return { 
    user: UserInfo.get() 
    }; 
}]); 

機能はのUserInfoサービスでremove関数です。どんな助けもありがとう。

答えて

0

工場はシングルトンです。最初に作成されたインスタンスは、毎回あなたが要求するたびに使用されます。ですから、次の操作を実行した場合:

.factory('Authentication',['UserInfo',function(UserInfo){ 
    return { 
     user: UserInfo.get() 
    }; 
}]); 
.controller('Blabla', ['Authentication', function(Authentication) { 
    var user = Authentication.user; 
}] 

あなたがに等しいユーザーを設定するかをUserInfo.get()その時点で戻ります。したがって、Authentication.user()を呼び出すたびに、実際にUserInfoの内容に関係なく、同じオブジェクトが返されます。

これを解決するには、関数resultの代わりに関数を渡します。これと同じように:

.factory('Authentication',['UserInfo',function(UserInfo){ 
    return { 
     user: UserInfo.get 
    }; 
}]); 
.controller('Blabla', ['Authentication', function(Authentication) { 
    var user = Authentication.user(); 
}] 

通知はどのように()(カッコ)UserInfo.getになくなっていると、彼らはAuthentication.user()に追加されます。

+0

**()**(かっこ)を削除すると、私のイオンビューにバインドしていたデータは消えました。 remove関数でnull値を受け入れる角度を得る方法はありませんか? –

+0

ここで** Authentication.user **と呼ばれる場所は** Authentication.user()**になります**追加**()**(かっこ) –

+0

私はこれを含めるように答えを更新しました。 –

関連する問題