gpt4 book ai didi

javascript - Angularjs, Controller 内未正确调用函数

转载 作者:行者123 更新时间:2023-12-03 07:40:10 25 4
gpt4 key购买 nike

我正在做这个登录练习,用户可以登录并发布注释,并查看他们已发布的注释。我的问题是,当我注销并使用其他用户登录时,我会看到前一个用户的注释。

这是一个例子:

https://gyazo.com/ddeae869673926047fd205a8edeb150b

我使用不同的用户登录,然后显示:

https://gyazo.com/0a1905b88b5148be171a44d8876304d5

我重新启动页面并显示相应的注释:

https://gyazo.com/dcd199a41738ecd2ac9a85fe5832e51a

Controller :

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)
})
}
}

这是应用程序https://login-sys.herokuapp.com/

最佳答案

我找到了您的服务的未缩小代码。

基于此,我认为问题在于您在 $notes 服务中声明了一次 var deferred = $q.defer()

我认为每次调用服务方法时都应该“更新”:

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中也是如此。

第二次返回具有相同值的相同 Promise 时,因此您的 homeControllergetMyNotes 函数将获得相同的结果,尽管 $notes 服务发出新请求。

$users 服务的 logoutsignup 功能中,您已经正确使用了它。

关于javascript - Angularjs, Controller 内未正确调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35444450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com