为什么我不能删除对firebase任务的特定引用?我有参考

时间:2014-10-08 03:49:57

标签: javascript firebase angularfire

我有一个任务的关键,但当我删除它的兄弟键时,我似乎无法删除它。当我创建任务时,我也使用相同的参考编号创建它的副本。我正在将firebase ref设置为特定任务。我做错了什么?

        //get user feed
        var userRef = new Firebase("https://plnkr.firebaseio.com/users/" + user.uid + '/tasks/');
        var userList = $firebase(userRef);
        $scope.userList = userList.$asArray();

        //get activity feed
        var ref = new Firebase("https://plnkr.firebaseio.com/activity");
        var list = $firebase(ref);
        $scope.list = list.$asArray();

        $scope.addTask = function(task){
          var timestamp = moment().valueOf();
          $scope.list.$add({
            title: task.title,
            $priority: timestamp,
            timestamp: timestamp,
            tally:0
          }).then(function(ref){
            $scope.userList.$add({
              title: task.title,
              $priority: timestamp,
              timestamp: timestamp,
              tally:0,
              ref: ref.name()
            });
          });
        };

        $scope.deleteTask = function(task){
          $scope.userList.$remove(task);
          var ref = new Firebase("https://plnkr.firebaseio.com/activity/" + task.ref);
          $scope.list.$remove(ref);
        };

要添加到以下解决方案中:

更新任务时,我使用了

$scope.updateTask = function(task){
      $scope.userList.$save(task);
      var ref = new Firebase("https://plnkr.firebaseio.com/activity/" + task.ref);
      ref.update({title:task.title});
    };

当最初创建任务时,ref从promise中保存,因此它是相同的ref。显然,您无法直接修改对象,因为它是每个列表中的不同对象。所以$ scope.list。$ update($ id)在这种情况下不起作用。

1 个答案:

答案 0 :(得分:0)

这不起作用:$scope.list.$remove(ref)

$remove方法可以接受$ id或要删除的项目。我不认为它可以采取参考。

当我需要从数组中删除一个对象时,我会这样查找:

list.$remove(list.$getRecord(id));

说:如果您有参考号,只需拨打ref.set(null)即可将其从Firebase中删除