我有我的app.js這個代碼發送聊天和看我的聊天應用如何採取某些屬性的最後一個值從JSON在Angularjs
$scope.messageshistory = {};
$scope.tmp = {};
// send message
$scope.sendMessage = function(){
$scope.messages = {
from : $scope.datauser['data']['_id'],
fromname : $scope.datauser['data']['nama'],
to : $scope.tmpuserid,
message : $scope.tmp['sendmessage'],
time : moment()
};
//event emit message
socket.emit('message',$scope.messages,function(callback){
if(!callback['error']){
$scope.messages['time'] = moment($scope.messages['time']).format('DD-MMMM-YYYY HH:MM');
if ($scope.messageshistory.hasOwnProperty($scope.tmpuserid)){ //yg di json yg paling awal
$scope.messageshistory[$scope.tmpuserid].push($scope.messages);
}else{
$scope.messageshistory[$scope.tmpuserid] = [];
$scope.messageshistory[$scope.tmpuserid].push($scope.messages);
}
$scope.tmp['sendmessage'] = '';
}else{
var msg = callback['error'];
navigator.notification.alert(msg,'','Error Report', 'Ok');
}
$scope.$apply();
});
};
//event read message
socket.on('message', function (data) {
window.plugin.notification.local.add({
id : moment(),
title : data['fromname'],
message : data['message'].substr(0,20) + ' ...',
led : 'A0FF05',
json : JSON.stringify({ routes:'chat', nama :data['fromname'],from:data['from'] })
});
data['time'] = moment(data['time']).format('DD-MMMM-YYYY HH:MM');
if ($scope.messageshistory.hasOwnProperty(data['from'])){
$scope.messageshistory[data['from']].push(data);
}else{
$scope.messageshistory[data['from']] = [];
$scope.messageshistory[data['from']].push(data);
}
for(var i = 0; i<= $scope.datauser['data']['friends'].length; i++){
if($scope.datauser['data']['friends'][i]['userid'] == data['from']){
$scope.datauser['data']['friends'][i]['ischat'] = true;
break;
}
};
$scope.$apply();
});
我的問題是如何利用最後的消息屬性中的值來自$scope.messageshistory
,因爲$scope.messages
用於發送消息,$scope.messageshistory
用於保留聊天記錄。這是聊天活動圖像:
剛剛從這個活動,$scope.messageshistory
將數據保存在它的JSON爲:
{
"5512": [{
"from": "561c",
"fromname": "ryan",
"to": "5512",
"message": "hey",
"time": "18-Maret-2016 21:03"
}, {
"from": "5512",
"fromname": "sasa",
"to": "561c",
"message": "hello",
"time": "18-Maret-2016 21:03",
"_id": "593s"
}]
}
我使用angular.toJson($scope.messageshistory)
得到這個值,而這個數組如果聊天活動仍在繼續,總是加起來。我的意圖是從$scope.messageshistory
獲得消息屬性中的最後一個值,即在我的應用程序中使用Text-to-Speech功能。這是代碼:
$scope.speakText = function() {
TTS.speak({
text: **this the place for the code**,
locale: 'en-GB',
rate: 0.75
}, function() {
// handle the success case
}, function (reason) {
// Handle the error case
});
};
它將讀取$scope.messageshistory
中的最後一條消息。那麼,我必須編寫哪些代碼才能獲取最後一個值?
看起來像'$ scope.messageshistory'是一個對象。您想獲取特定userId密鑰的最新消息?或者由套接字發出的最新消息? '$ scope.messageshistory [$ scope.tmpuserid] [$ scope.messageshistory [$ scope.tmpuserid] .length-1]''怎麼辦? – cl3m
@ cl3m等待我會試試 –
@ cl3m它的工作,但它仍然是所有的財產,如何把'消息'屬性 –