Javascript Angularjs应用程序中的angular.extend无法合并2个阵列
我想合并两个数组,但结果总是空的。我不知道是什么问题这是我的代码:Javascript Angularjs应用程序中的angular.extend无法合并2个阵列,javascript,angularjs,promise,angular-promise,Javascript,Angularjs,Promise,Angular Promise,我想合并两个数组,但结果总是空的。我不知道是什么问题这是我的代码: $scope.messages=[]; $scope.messagesRecieved=[]; $scope.messagesSent=[]; Message.getMessengerMessages(localStorage.getItem("token"),localStorage.getItem("contact")).then(function(messages){ $scope.messagesRecieved=
$scope.messages=[];
$scope.messagesRecieved=[];
$scope.messagesSent=[];
Message.getMessengerMessages(localStorage.getItem("token"),localStorage.getItem("contact")).then(function(messages){
$scope.messagesRecieved=messages;
})
console.log('le contact est '+localStorage.getItem("contact") +'Lutilisateur est '+localStorage.getItem("token"))
Message.getMessengerMessages(localStorage.getItem("contact"),localStorage.getItem("token")).then(function(messages){
$scope.messagesSent=messages;
for (var i=0; i<messages.length; i++) {
if(messages[i].read=='no'){
Message.modifyRead(messages[i]._id);
}
}
})
angular.extend( $scope.messages, $scope.messagesRecieved, $scope.messagesSent);
$scope.messages=[];
$scope.messagesRecieved=[];
$scope.messagesSent=[];
Message.getMessenger消息(localStorage.getItem(“令牌”)、localStorage.getItem(“联系人”))。然后(函数(消息){
$scope.messagesRecieved=消息;
})
console.log('le contact est'+localStorage.getItem(“contact”)+'Lutilisateur est'+localStorage.getItem(“token”))
Message.getMessenger消息(localStorage.getItem(“联系人”)、localStorage.getItem(“令牌”))。然后(函数(消息){
$scope.messagesSent=消息;
for(var i=0;i用于合并对象,而不是数组。您可能希望在此处使用
用于合并对象,而不是数组。您可能希望在此处使用
我猜您只使用$scope.messagesRecieved
和$scope.messagesSent
作为中间产物,用于派生$scope.messages
,而不是驱动视图
如果是这样,它们可能会消失,并且messagesRecieved
/messagesent
可以从promise.all()
开始沿着承诺链传递,以聚合您的两个Message.getMessengerMessages()
承诺
另外,要连接数组,请使用newArray=array1.concat(array2)
//$scope.messagesRecieved=[];//除非有相应的视图元素,否则不需要
//$scope.messagesSent=[];//除非有相应的视图元素,否则不需要
$scope.messagesSent=[];//只有在两个异步获取正在进行时,如果要使视图元素为空,才需要执行此操作。
var receivedPromise=Message.getMessenger消息(localStorage.getItem('token')、localStorage.getItem('contact');
var sentPromise=Message.getMessenger消息(localStorage.getItem('contact')、localStorage.getItem('token'))。然后(函数(消息){
对于(var i=0;i我猜您只使用$scope.messagesReceived
和$scope.messagesSent
作为中间产物,用于派生$scope.messages
,而不是驱动视图
如果是这样,它们可能会消失,并且messagesRecieved
/messagesent
可以从promise.all()
开始沿着承诺链传递,以聚合您的两个Message.getMessengerMessages()
承诺
另外,要连接数组,请使用newArray=array1.concat(array2)
//$scope.messagesRecieved=[];//除非有相应的视图元素,否则不需要
//$scope.messagesSent=[];//除非有相应的视图元素,否则不需要
$scope.messagesSent=[];//只有在两个异步获取正在进行时,如果要使视图元素为空,才需要执行此操作。
var receivedPromise=Message.getMessenger消息(localStorage.getItem('token')、localStorage.getItem('contact');
var sentPromise=Message.getMessenger消息(localStorage.getItem('contact')、localStorage.getItem('token'))。然后(函数(消息){
对于(var i=0;i@julianaMorales这对我来说还不够。你能详细说明它是如何失败的吗?当我在其视图上显示$scope.messages时empty@julianaMorales这对我来说还不够。你能详细说明一下它是如何失败的吗?当我在视图上显示$scope.messages时,它是空的Message
API是异步的。将数据从每个内部推送到$scope.messages
数组中。然后
块。可能重复的消息
API是异步的。将数据从每个内部推送到$scope.messages
数组中。然后
块。可能重复的
$scope.messages = $scope.messages
.concat($scope.messagesRecieved)
.concat($scope.messagesSent);
// $scope.messagesRecieved = []; // not necessary unless there's a corresponding view element
// $scope.messagesSent = []; // not necessary unless there's a corresponding view element
$scope.messagesSent = []; // you only need to do this if you want to nullify a view element while the two async gets are underway.
var receivedPromise = Message.getMessengerMessages(localStorage.getItem('token'), localStorage.getItem('contact'));
var sentPromise = Message.getMessengerMessages(localStorage.getItem('contact'), localStorage.getItem('token')).then(function(messages) {
for(var i=0; i<messages.length; i++) {
if(messages[i].read == 'no') {
Message.modifyRead(messages[i]._id); // if Message.modifyRead() is async, this code block is a bit different
}
}
});
Promise.all(receivedPromise, sentPromise).then(function(messagesRecieved, messagesSent) {
$scope.messages = messagesRecieved.concat(messagesSent);
});