我正在进行此登录练习,用户可以登录和发布备注,并查看他们发布的备注。我的问题是当我注销并使用其他用户登录时,我看到了前一个用户的注释。
以下是插图:
我使用其他用户登录,然后显示:
我重新启动页面并显示相应的注释:
此控制器:
exports.homeController = function ($scope, $location, $q, $users, $window, $notes, $http) {
var auth = function () {
var userInfo = $users.getUserInfo()
if (userInfo) {
return $q.when(userInfo)
} else {
return $q.reject({ authenticated: false })
}
}
$scope.userInfo = auth()
myNotes($scope.userInfo.$$state.value.accessToken) // I invoke my function to get the notes for each specific user but it doesn't seem to work.
$scope.logout = function () {
$users.logout()
.then(function (results) {
$scope.userInfo = null
$scope.myNotes = null
$location.path('/')
}, function (err) {
console.log(err)
})
}
$scope.notes = {
notes: ''
}
$scope.postNote = function () {
$notes.postNotes($scope.userInfo.$$state.value.accessToken, $scope.notes)
.then(function (result) {
$scope.myNotes.push($scope.notes)
$scope.notes = ''
}, function (err) {
console.log(err)
})
}
function myNotes (user_id) {
$notes.getMyNotes(user_id)
.then(function (result) {
console.log(result)
$scope.myNotes = result.data
}, function (err) {
console.log(err)
})
}
}
答案 0 :(得分:1)
我找到了这些服务的非缩小代码。
基于此,我认为问题是您在var deferred = $q.defer()
服务中声明$notes
次。
我认为每次调用服务方法时都应该“更新”:
function getMyNotes (user_id) {
var deferred = $q.defer();
$http.get('/api/myNotes/' + user_id + '?access_token=' + user_id)
.then(function (result) {
deferred.resolve(result)
}, function (err) {
deferred.reject(err)
});
return deferred.promise
}
同样在postNotes
。
第二次使用相同的值返回相同的承诺时,尽管homeController
服务发出新请求,但getMyNotes
的{{1}}函数会得到相同的结果。< / p>
在$notes
服务的$users
和logout
功能中,您已正确使用它。