我只是想在我的第一个小角度项目上工作更多,并且我将AngularFire从0.3.0更新到0.5.0并且没有任何真正的工作了。我能够恢复数据库访问,并将项目添加到我的列表中。但删除功能不再起作用。在我使用AngularFire之前,我使用了splice(index,1)来删除一个项目。我还尝试使用0.5.0中的新$ remove,但它只删除列表中的所有项目,即使我添加了一个键。
我的名单重复:
<tr ng-repeat="(key, earning) in earnings | orderByPriority">
<td>{{earning.date}}</td>
<td>{{earning.description}}</td>
<td>{{earning.price}} €</td>
<td>
<button class="btn btn-danger" ng-click="removeEarning(key)">
Löschen
</button>
</td>
如您所见,它只是创建一个包含数据的tr,每个项目都有一个删除按钮。当我单击特定项目上的删除按钮时,只应删除此项,而不是从列表中删除所有项目。
我的JS代码现在:
function BalanceCtrl($scope, $log, $http, $firebase) {
var dbEarnings = new Firebase('https://*******.firebaseio.com/Earnings');
$scope.earnings = $firebase(dbEarnings);
$scope.addEarning = function() {
$scope.earnings.$add({date:$scope.FormEarningDate, description:$scope.FormEarningDescription, price:$scope.FormEarningPrice});
$scope.FormEarningDate = '';
$scope.FormEarningDescription = '';
$scope.FormEarningPrice = '';
$scope.updateEarning();}
$scope.removeEarning = function (key) {
$scope.earnings.$remove(key);
}
它无法以某种方式从列表中删除特定项目。这一切都很好用0.3.0。有人知道我能做什么吗?
答案 0 :(得分:3)
orderByPriority
过滤器会将集合转换为数组,从而导致key
成为数字索引(0,1,2,...) - 它不再是Firebase名称。
来自http://angularfire.com/documentation.html:
AngularFire提供orderByPriority过滤器来转换 $ firebase返回到数组的对象。数组中的对象 按优先级排序(如Firebase中所定义)。另外,每个 数组中的对象将在其上定义$ id属性,这将是 对应于该对象的键名。
所以请使用removeEarning(earning.$id)
。