我只想删除一个项目,但我的代码删除了所有项目。 我不明白,也无法找到其他解决方案,
请帮助
<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);
答案 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。