2017-02-09 6 views
0

私はAngularJS Factory and Servicesで読んでいたので、多くの例がありました。しかし、私はそれらの背後にある論理を理解していないし、それらを動作させることもできません。AngularJSでtrue/falseを返すサービスを作成するにはどうすればよいですか?

myApp.service('loginCheck', function(Facebook) { 
this.loggedIn = false; 
Facebook.login(function(response) { 
    if (response.status == 'connected') { 
     this.loggedIn = true; 
    } 
}); 
}); 

私の考え方が正しい場合は、このサービスを利用してloggedIn変数を返す必要があります。代わりに工場を使うべきですか?私はこの変数を一度必要に応じて再度呼び出さずに、すべて保存する必要があります。私はどうすればそれをすることができます。私は工場とサービスの違いを本当に理解できませんでした。私は初心者です。

if(loginCheck.loggedIn){ 
    console.log("logged in!"); 
} 
else{ 
    console.log("not logged in :/") 
} 

ありがとうございます。あなたがこれを行うことができます

+0

私の回答が役に立った – Sajeetharan

答えて

3

app.service('MyUser', [function($scope) { 
    this.loggedIn = false; 
    return { 
    getStatus: function() { 
     //call fb api 
     this.loggedIn = true; 
     return this.loggedIn; 
    } 
    } 
}]); 

DEMO

var app = angular.module('app', []); 
 
app.controller('loginController',['$scope', 'MyUser',function($scope, MyUser) 
 
{ 
 
    $scope.isloggedin = MyUser.getStatus(); 
 
    alert($scope.isloggedin); 
 
}]); 
 
app.service('MyUser', [function($scope) { 
 
    this.loggedIn = false; 
 
    return { 
 
    getStatus: function() { 
 
     this.loggedIn = true; 
 
     return this.loggedIn; 
 
    } 
 
    } 
 
}]);
<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <meta charset="utf-8" /> 
 
    <title></title> 
 
</head> 
 
<body ng-app="app" ng-controller="loginController"> 
 
    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.6/angular.js"></script> 
 
</body> 
 
</html>

2

工場を定義し、依存関係など、あなたのコントローラに渡されます。

var myApp = angular.module('myApp', []); 
myApp.factory('loginCheck', ["Facebook", function(Facebook) { 
    var object = { 
    loggedIn: false, 
    loginFacebook: function() { 
     // do facebook login here: 
     //Facebook.login(function(response) { 
     // if (response.status == 'connected') { 
      object.loggedIn = true; 
     // }; 
     } 
    }; 

    object.loginFacebook(); 
    return object; 
}]); 

myApp.controller('myCtrl', ['loginCheck', '$scope', function(loginCheck, $scope) { 
    $scope.loggedIn = loginCheck.loggedIn; 
}]); 

このjsFiddleサンプルhereを確認してください。

私はFacebookの認証について知らないが、私はこれらのリンクはあなたを助けるかもしれないと思う:this questionまたはthis linkでサービスや工場の外観間で異なる見つけるには、https://developers.facebook.com/docs/javascript/howto/angularjs

https://blog.brunoscopelliti.com/facebook-authentication-in-your-angularjs-web-app/

関連する問題