我對AngularJS和編程非常陌生,所以對你來說這可能很容易問題,但是我爲它掙扎了好幾個小時,並且無法讓我的想法變得直白。服務中的數據沒有更新
所以,我的目標很簡單,就是在我的應用程序(網頁)上有Facebook登錄,我使用的是Ciul angular-facebook module,這實際上有效,但不是我想要的方式。當用戶登錄我想顯示他的名字和照片,但現在我必須手動重新加載頁面,然後顯示,直到那時它不會。此外,我將登錄用戶存儲到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 = [];
});
}]);
調用登錄功能< LI> < A HREF = 「#/」 NG點擊=「ms.fbLogin( )「>使用Facebook登錄
以html格式調用數據{{user.name}}或{{ms.user.name}}
那麼,同樣的問題也是退出。
哇哦,那是比我想象的容易,我這麼笨。非常感謝你。奇蹟般有效! – smith
很高興能幫到你!不要覺得愚蠢,我花了一段時間才弄清楚這個概念。祝你好運! – hsiung