Javascript 如何在AngularJS中正确存储后续请求中的本地数组
我想要一个本地数组来存储“最后的消息”(收件箱视图)。在我的服务中,我执行GET请求,该请求返回如下数据结构:Javascript 如何在AngularJS中正确存储后续请求中的本地数组,javascript,arrays,angularjs,Javascript,Arrays,Angularjs,我想要一个本地数组来存储“最后的消息”(收件箱视图)。在我的服务中,我执行GET请求,该请求返回如下数据结构: [{id:1, from_user:1, to_user:2, message:"bar", has_been_read:false}, {id:2, from_user:3, to_user:2, message:"foo", has_been_read:false}] 服务器仅发送最后一条消息,其中has_been_read==false,这是服务的代码: $scope.unr
[{id:1, from_user:1, to_user:2, message:"bar", has_been_read:false},
{id:2, from_user:3, to_user:2, message:"foo", has_been_read:false}]
服务器仅发送最后一条消息,其中has_been_read==false,这是服务的代码:
$scope.unreadMessages = []
$scope.GetUnreadMessages = function(){
$localStorage.AllMessages.push($scope.unreadMessages)
UserService.GetUnreadMessages()
.success(function (data) {
data = angular.fromJson(data);
$scope.unreadMessages.push(data);
}).
error(function(error) {
//do something
});
}
$scope.GetUnreadMessages()
让我们假设在我上面给出的json示例中,我读取了id:1,这导致,haves\u read变为true。。在下一个请求中,它将只返回正确的数据id:2。。但我的问题是,新的请求数据替换了我所有的旧数据。所以我想要发生的是,即使我读到id:1,除非我删除了它或者我有来自同一用户的新消息,我仍然希望在我发出新请求时保留它。。我知道我的代码错了,只是不知道该怎么做 一种可能的解决方案是保存由用户
分组的响应:
.success(function(unreadMessages){
angular.forEach(unreadMessages, function(unreadMessage){
// if conversation from a user exists
if(localStorage.getItem(unreadMessage.from_user)){
var conversation = JSON.parse(localStorage.getItem(unreadMessage.from_user));
conversation.push(unreadMessage);
localStorage.setItem(unreadMessage.from_user, JSON.stringify(conversation));
} else {
var conversation = [];
conversation.push(unreadMessage);
localStorage.setItem(unreadMessage.from_user, JSON.stringify(conversation));
}
});
})
您需要将已读邮件保存到本地存储。@dfsq能否请您给出示例代码?我对编程非常陌生。发布代码如何标记邮件已读。@dfsq当我对特定用户的对话发出Get请求时,后端会将所有消息都作为true发送。。因此,单击“我的收件箱”中的项目时,它将变为true。理想情况下,服务器应向您发送已读/未读消息,因为它是保持客户端同步的实体。在您当前的实现中,每个客户机将专门拥有自己的已读消息副本。