观看 firebaseArray 时获取 child_added 的内容

Get contents of child_added while watching firebaseArray

我有一个简单的私人聊天,但有不同类型的消息,所以当我发送到服务器 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

};

如您所见,有 属性 'type'.

现在我想查看任何新消息。在文档中有一个 watch API 函数,但它只是 returns record/message 的 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);
});

以上 return 只有 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));
});

上面的代码终于可以运行了

您可以使用 $getRecord 来完成:

console.log($scope.messages.$getRecord(data.key));

您可以在此处查看 api 数组:https://www.firebase.com/docs/web/libraries/angular/guide/synchronized-arrays.html