【发布时间】:2016-03-08 14:34:44
【问题描述】:
我的 app.js 中有这段代码,用于在我的应用程序中发送聊天和阅读聊天
$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 获取消息属性中的最后一个值,以便在我的应用程序的文本转语音功能中使用。这是代码:
$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 它可以工作,但它仍然是所有属性,如何获取“消息”属性
标签: javascript android angularjs json cordova