[英]How do I write a service that return true/false in AngularJS?
我一直在阅读AngularJS工厂和服务,并遇到了很多例子。 但是我不理解它们背后的逻辑,也无法使它们工作。
myApp.service('loginCheck', function(Facebook) {
this.loggedIn = false;
Facebook.login(function(response) {
if (response.status == 'connected') {
this.loggedIn = true;
}
});
});
如果我对概念的想法是正确的,那么我需要获得此服务以返回loggingIn变量。 我应该改为使用工厂吗? 我需要一直存储此变量,而不必在需要时再次进行调用。 我该怎么做。 我无法真正理解工厂和服务之间的区别。 我是这里的初学者。
if(loginCheck.loggedIn){
console.log("logged in!");
}
else{
console.log("not logged in :/")
}
谢谢。
你可以这样做,
app.service('MyUser', [function($scope) {
this.loggedIn = false;
return {
getStatus: function() {
//call fb api
this.loggedIn = true;
return this.loggedIn;
}
}
}]);
演示
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>
定义一个工厂,并将其作为依赖项传递给您的控制器。
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示例。
我不知道关于Facebook的身份验证,但我认为这些链接可以帮助你: https://blog.brunoscopelliti.com/facebook-authentication-in-your-angularjs-web-app/ , HTTPS://developers.facebook .com / docs / javascript / howto / angularjs
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.