Javascript 如何在AngularJS中正确存储后续请求中的本地数组

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

我想要一个本地数组来存储“最后的消息”(收件箱视图)。在我的服务中,我执行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.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。理想情况下,服务器应向您发送已读/未读消息,因为它是保持客户端同步的实体。在您当前的实现中,每个客户机将专门拥有自己的已读消息副本。