我有一个简单的私聊,但是有不同类型的消息,所以当我发送到服务器json结构时,我也传递了消息类型。
$scope.messages = fireChat.firebaseArray;
$scope.addMessage = function(e) {
//ADD TO FIREBASE
$scope.messages.$add({
uid: $scope.authData.uid,
text: $scope.msg,
timestamp: Firebase.ServerValue.TIMESTAMP,
type: 'msg'
});
$scope.msg = ""; //RESET MESSAGE
};
正如您所看到的,有“属性”类型。
现在我想留意任何新消息。与文档中一样,有一个监视API函数,但它只返回记录/消息的ID
。我想获取消息的内容并检查type
是什么,然后根据运行其他js函数。
$scope.messages.$watch(function (data) {
console.log("angularfire watch");
console.log(data);
console.log(data.event);
console.log(data.key);
console.log(data.prevChild);
});
以上内容仅返回child_added
-Jp6KZWlyDtDETz8Agpr
和-Jp6KZWlyDtDETz8ospr
。如你所见,钥匙下没有身体
是否有可能获得关键内容?所以我可以做例如
switch (key.type) {
case 'paid':
animate_paid();
}
修改
$scope.messages.$watch(function (data) {
console.log("angularfire watch");
console.log(data);
console.log(data.event);
console.log(data.key);
console.log($scope.messages.$getRecord(data.key));
});
上面的代码最终起作用
答案 0 :(得分:1)
您可以使用$ getRecord来执行此操作:
console.log($scope.messages.$getRecord(data.key));
您可以在这里查看数组api:https://www.firebase.com/docs/web/libraries/angular/guide/synchronized-arrays.html