저는 AngularJS와 프로그래밍에있어 매우 새롭기 때문에 쉽게 질문 할 수 있습니다. 그러나 많은 시간 동안 고민하고 있으며 제 생각을 제대로 이해하지 못합니다.서비스의 데이터가 업데이트되지 않았습니다.
그래서 내 목표는 간단합니다. 내 앱 (웹 페이지)에 페이스 북 로그인을 사용하려면 Ciul angular-facebook module을 사용하고 있습니다. 실제로는 작동하지만 원하는 방식대로 작동하지 않습니다. 사용자 loggs 나는 그의 이름과 사진을 보여주고 싶지만 지금 수동으로 페이지를 다시로드해야합니다. 또한 localStorage에 로그인 한 사용자를 저장하고 있습니다 (제대로 작동합니다).
문제는 로그인 한 후 데이터가 업데이트되지 않는다는 것입니다. 내 HTML 코드에서 컨트롤러 또는 서비스에서 호출하려고했지만 둘 다 오래된 데이터가 있었고 페이지를 다시로드하지 않고 업데이트하는 방법을 알지 못합니다. 가장 흥미로운 부분은 간단한 변수로 시도하면 매력처럼 작동한다는 것입니다. 여기
는 여기app.factory('mainService', ['$window', '$location', '$route', '$filter', 'Facebook', function (win, $location, $route, $filter, Facebook) {
var scope = {
fbLogin: false,
fbUid: 0,
fbAccessToken: 0,
vkLogin: false
};
var user = {};
if(localStorage.getItem('user') != null) {
user = JSON.parse(localStorage.getItem('user'));
} else {
user = null;
}
return {
scope : scope,
user : user,
fbLogin : function() {
Facebook.login(function (response) {
scope.fbLogin = response.status;
scope.fbAccessToken = response.authResponse.accessToken;
scope.Uid = response.authResponse.userID;
Facebook.api('/me?fields=id,name,email,picture', function (response) {
localStorage.setItem('user', JSON.stringify(response));
});
});
console.log('setting user');
user = JSON.parse(localStorage.getItem('user'));
},
fbLogout : function() {
Facebook.logout(function (response) {
});
user = null;
localStorage.removeItem('user');
},
removeAuth : function() {
Facebook.api({
method: 'Auth.revokeAuthorization'
}, function (response) {
Facebook.getLoginStatus(function (response) {
scope.fbLogin = response.status;
});
});
}
};
}]);
내 컨트롤러 내 서비스입니다
app.controller('IndexController', ['$scope', '$location', '$http', 'mainService', function ($scope, $location, $http, mainService) {
$scope.ms = mainService;
$scope.user = mainService.user;
$http({
method: 'GET',
url: 'backend/api/v1/getItems.php',
headers: { "Content-Type": 'text/json; charset="utf-8"' }
})
.success(function(data, status) {
//alert("status is : "+status);
if(status === 200) {
$scope.items = data;
}
})
.error(function(data, status) {
$scope.items = [];
});
}]);
호출 로그인 기능 < 리> < A HREF = "# /"NG 클릭 = "ms.fbLogin () "> Facebook을 사용하여 로그인
데이터를 {{user.name}} 또는 {{ms.user.name}}
글쎄, 같은 문제는 로그 아웃에도 있습니다.
와우 오, 생각보다 쉬웠다, 내가 너무 바보입니다. 고맙습니다. 매력처럼 작동합니다! – smith
기꺼이 도와 드리겠습니다! 바보 같은 생각을하지 마십시오. 개념을 이해하기까지 잠시 시간이 걸렸습니다. 행운을 빕니다! – hsiung