无法使用 AngularFire $remove() 删除元素

Cannot delete element using AngularFire $remove()

我正在尝试从我的数据库中删除一个项目(回合)。我可以 console.log $id 但是当我尝试 roundsList.$remove(round.id) 它不做任何事情。我又一次彻底困惑了...

JS:

.controller('RoundsCtrl', ['$scope', '$firebase', 'FBURL', function ($scope, $firebase, FBURL, url) {
var roundsRef = new Firebase(FBURL + 'rounds');
var roundsList = $firebase(roundsRef).$asArray();
var usersRef = new Firebase(FBURL + 'users');
var usersRef = usersRef.child($scope.loggedInUserID).child('rounds');
var usersRounds = $firebase(usersRef).$asArray();



$scope.removeItem = function (index, round, event) {
    // Avoid wrong removing
    if (round.$id == undefined) return;
    // Firebase: Remove item from the list
    $scope.roundsList.$remove(round.$id);
};

/* SET DEFAULT FOR TOGGLE TO COLLAPSED*/
$scope.isCollapsed = true;

/* ONCE ROUNDS ARE LOADED RETURNS ROUNDS BY ID FOR INDIVIDUAL USER*/
usersRounds.$loaded()
    .then(function (data) {
        $scope.rounds = data.map(function (item) {
            console.log(item);
            console.log(item.$id);
            return roundsList.$getRecord(item.roundID);
        });
    });}])

HTML:

<tbody ng-repeat="round in rounds | orderBy:orderBy">
            <tr>
                <td>
                    {{round.date}}
                </td>
                <td>
                    {{round.courseName}}
                </td>
                <td>
                    {{round.courseID}}
                </td>
                <td>
                    {{round.user}}
                </td>
                <td>
                    {{round.userID}}
                </td>
                <td>
                    {{round.tags}}
                </td>
                <td>
                    <a href="#/roundDetail/view/{{round.$id}}" class="btn btn-primary">View</a>
                    <a href="#/roundDetail/edit/{{round.$id}}" class="btn btn-primary">Edit</a>
                    <button class="btn btn-danger" ng-click="isCollapsed = !isCollapsed">Delete</button>
                </td>
            </tr>
            <tr collapse="isCollapsed">
                <td colspan="7">
                    <div>
                        <div class="well well-lg">
                            <p>Are you sure? This cannot be undone!</p>
                            <button ng-click="removeItem($index, round, $event)" class="btn btn-danger">Delete Round</button>
                            <button ng-click="isCollapsed = !isCollapsed" class="btn btn-info">Cancel</button>

                        </div>
                    </div>
                </td>
            </tr>
        </tbody>

编辑:

我终于能够使用以下代码从两个数据库中删除。希望它能帮助其他人。

/* DELETES ROUND FROM MAIN ROUND DATABASE AND FROM USER SPECIFIC DB*/
var roundsListSync = $firebase(roundsRef);
var usersRoundsListSync = $firebase(usersRefRounds);
$scope.removeItem = function (index, round, event) {
    roundsListSync.$remove(round.$id);
    //console.log(usersRounds);
    var i = 0;
    var len = usersRounds.length;
    for (; i < len;) {
        console.log(usersRounds[i].roundID);
        if (usersRounds[i].roundID === round.$id) {
            var usersRoundsID = usersRounds[i].$id;
            //console.log(usersRoundsID);
            usersRoundsListSync.$remove(usersRoundsID);
            i++;
        } else {
            i++;
        }
    }
};

您正在调用 $scope.roundsList.$remove(round.$id),但您尚未在范围内声明 roundsList:var roundsList = $firebase(roundsRef).$asArray(); 请尝试 var roundsList = $firebase(roundsRef).$asArray()

如果这不起作用,请尝试创建一个非数组的 firebase 引用:

var roundsListSync = $firebase(roundsRef);
roundsListSync.$remove(round.$id);