通过angularfire删除一个项目

时间:2016-02-21 08:45:06

标签: angularjs firebase angularfire

我只想删除一个项目,但我的代码删除了所有项目。 我不明白,也无法找到其他解决方案,

请帮助

<div ng-repeat="(id, data) in datas">
<input type="text" ng-model="data.name" ng-change="datas.$save(data)" />  
<input type="text" ng-model="data.age" ng-change="datas.$save(data)" />
<a ng-click="removeItem(id)">delete</a>
</div>


ref = new Firebase(FIREBASE_URL);
authData = ref.getAuth();
obj = $firebaseObject(ref);    
obj.$remove(id);

2 个答案:

答案 0 :(得分:2)

如果FIREBASE_URL指向您的列表(甚至整个数据库),那么您的代码确实会删除该列表。这是预期的行为。由于您正在使用$firebaseObject,因此调用$remove()会删除该对象;在这种情况下,整个项目列表。

仅删除id项目

var ref = new Firebase(FIREBASE_URL);
var items = $firebaseArray(ref);    
items.$remove(items.$indexFor(id));

这有点令人费解,你可以轻松做到:

new Firebase(FIREBASE_URL).child(id).remove();

以前曾经问过这个问题,所以请用搜索来表示友好:

答案 1 :(得分:0)

要从Firebase对象中仅删除单个属性,请使用JavaScript删除操作符,然后使用$save对象。

HTML

<div ng-repeat="(key, data) in datas">
    <input type="text" ng-model="data.name" ng-change="datas.$save()" />  
    <input type="text" ng-model="data.age" ng-change="datas.$save()" />
    <button ng-click="removeItem(key)">delete</button>
</div>

JS

var ref = new Firebase(FIREBASE_URL);
var authData = ref.getAuth();

$scope.datas = $firebaseObject(ref);

$scope.removeItem = function(key) {
    delete $scope.datas[key];   
    $scope.datas.$save();
};

有关详细信息,请参阅MDN JavaScript Reference -- delete operator