我有一个包含此内容的用户控制器
$scope.followUnfollowUser = function(user) {
//If followed - unfollow
if (user.isFollowed) {
unfollowUser.unfollowUser(user).then(function() {
user.isFollowed=!user.isFollowed
}, function() {
})
Notification.success(user.name + ' wordt niet meer gevolgd.');
} else {
followUser.create({
followed_id: user.id
}).then(function() {
user.isFollowed=!user.isFollowed
}, function() {
})
Notification.success(user.name + ' wordt nu gevolgd.');
}
init();
}
var init = function () {
loadCurrent_user.loadCurrent_user().then(function(response) {
$scope.current_user = response.data;
usersService.loadUsers().then(function(response) {
$scope.users = response.data;
//Iterate and create isFollowed property
angular.forEach($scope.users, function(user) {
user.isFollowed = isFollowed(user.id);
})
console.log ($scope.current_user.following)
})
var isFollowed = function(userId) {
var following = $scope.current_user.following;
for (var i = 0; i < following.length; i++) {
if (following[i].id == userId) {
return true;
}
}
return false;
}
});
}
这个模板,
%ul{"ng-repeat" => "user in users"}
%li
name: {{ user.name }}
%br
%a{"ng-click" => "followUnfollowUser(user)"}
-# {{ user.isFollowed }}
{{ user.isFollowed ? "Unfollow user" : "Follow user"}}
当我在本地使用我的应用关注或取消关注用户时,console.log ($scope.current_user.following)
会使用正确数量的对象进行更新。
例如本地我跟随3个用户。 console.log返回3个对象。如果我取消关注用户,console.log将返回2个对象。
但是在我的实时服务器上,console.log ($scope.current_user.following)
没有使用该对象进行更新。例如,当我在我的实时服务器上关注0个用户并访问用户页面时。 console.log ($scope.current_user.following)
返回0个对象(因为我没有关注用户)。当我点击用户的关注链接时,我会收到关于我关注用户的通知,如果我检查了我的current_user.json
,则表明我关注了用户,当我检查{时{1}}它还表明我跟随用户。但我的relationships.json
返回0个对象。
当我点击链接以跟随另一个用户时,console.log ($scope.current_user.following)
返回1个对象(之前是用户,同时它应该显示2个对象。前一个和当前跟随的用户对象。)
所以在实时服务器上,console.log ($scope.current_user.following)
始终是落后者。
答案 0 :(得分:0)
在跟踪我的数据流后,我发现loadCurrent_user.loadCurrent_user().then(function(response)
中的init
函数与实际数据不同步。我不知道为什么。但是将loadCurrent_user.loadCurrent_user
和usersService.loadUsers
函数移到init之外,并移动到实际的followUnfollowUser
if / else语句中。现在正确检索数据并更新视图。