У меня есть этот код в моем 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)
, и этот массив будет всегда добавляйте, если действия чата все еще продолжаются. И мое намерение получить последнее значение в свойстве message от $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 wait Я попробую его –
@ cl3m это работает, но его все еще свойство, как просто взять свойство «message» –