2016-03-06 92 views
1

所以我聊天应用程序,与此JSON:如何取最后一个值从JSON一个属性在angularjs

{ 
    "561c": [{ 
     "from": "561c", 
     "fromname": "ryan", 
     "to": "sasa", 
     "messgae": "hey" 
    }, { 
     "from": "5512", 
     "fromname": "sasa", 
     "to": "ryan", 
     "messgae": "hey too" 
    }] 
} 

但这JSON总是加起来当用户发送的消息。我想从“消息”最后的值,以便在我的文本到语音代码中使用此值,我该如何编写代码?

,这是我的文本到语音转换:

$scope.speakText = function() { 
    TTS.speak({ 
      text: ***this place is for the code***, 
      locale: 'en-GB', 
      rate: 0.75 
     }, function() { 
      // handle the succes case 
     }, function (reason) { 
      // Handle the error case 
     }); 
    }; 

回答

0

可以使用underscore.js的 “勇气” 功能 - http://underscorejs.org/#pluck

_.pluck(您JSONs的阵列, 'messgae');

+0

我很抱歉,我编辑我的问题,不所有的值,但只是最后一个,但是当用户再次发送消息时,这个数组总是加起来。 –

2

物体 '561C' 使用forEach循环像

var messArray = []; 
    561c.forEach(function(obj){ 

    messArray.push(obj.message)}) 

var text = messArray.join(); 

您将在messArray所有消息。 如果我已经理解你的问题是正确的。

+0

我很抱歉,我编辑了我的问题,不是所有的值都只是最后一个,但是当用户再次发送消息时,这个数组总是会加起来的。 –

1

//获取数组的最后一个元素

var lastIndex = 561c.length(); 
var lastObj = 561c[lastIndex]; 

//从阵列561C

var lastMessage = lastObj.message; 

的最后一个对象得到消息,你得到了你想要的东西(Y)​​;

+0

其实我的JSON在$ scope.messageshistory里面,所以我可以将561c更改为$ scope.messageshistory? –

+0

它不会与$ scope.messageshistory :( –

0

您可以$范围传递给你的函数,然后传递561C你会得到对象,那么你可以索引消息在它

例子:

$scope.chat = { 
"561c": [{ 
    "from": "561c", 
    "fromname": "ryan", 
    "to": "sasa", 
    "messgae": "hey" 
}, { 
    "from": "5512", 
    "fromname": "sasa", 
    "to": "ryan", 
    "messgae": "hey too" 
}] 
} 

angular.module('app',[]).controller('myctrl', function($scope, data){ 
$scope.561c = data.messgae; 
} 
+0

实际上我做到了,它在$ scope.messageshistory中,所以在最后我只是使用'$ scope.messageshistory = data.message'或仍然与561c –

相关问题