我有一个任务的关键,但当我删除它的兄弟键时,我似乎无法删除它。当我创建任务时,我也使用相同的参考编号创建它的副本。我正在将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)在这种情况下不起作用。
答案 0 :(得分:0)
这不起作用:$scope.list.$remove(ref)
。
$remove
方法可以接受$ id或要删除的项目。我不认为它可以采取参考。
当我需要从数组中删除一个对象时,我会这样查找:
list.$remove(list.$getRecord(id));
说:如果您有参考号,只需拨打ref.set(null)
即可将其从Firebase中删除