从Firebase中删除项目

时间:2014-11-12 03:20:06

标签: javascript angularjs firebase

我试图了解如何从Firebase中删除某个项目。我已经设置了一个功能(createProvider)来创建一个项目,但无法弄清楚如何去除项目。

HTML

<form role="form" name="createProviderForm">
    <input type="text" ng-model="title">
    <button type="submit" ng-click="createProvider()">Submit</button>
</form>

<div ng-repeat="provider in providers">
    <h3>{{ provider.title }}</h3>
    <button type="button" ng-click="removeProvider()">Remove</button>
  </div>
</div>

JS

var rootRef = new Firebase(FBURL);
var providersRef = rootRef.child('providers');

$scope.newProvider = {};
$scope.providers = [];

providersRef.on('child_added', function(snapshot) {
  $timeout(function() {
    var snapshotVal = snapshot.val();
    console.log(snapshotVal);
    $scope.providers.push({
      title: snapshotVal.title
    });
  });
});

$scope.createProvider = function() {
  var newProvider = {
    title: $scope.title
  };
  providersRef.push(newProvider);
};

$scope.removeProvider = function() {

};

我已经创建了一个名为removeProvider的函数,但无法解决其中的内容。我意识到我必须以某种方式定位特定项目,然后将其从列表中删除。我只是不确定如何。

任何有关此的帮助将不胜感激。提前谢谢!

2 个答案:

答案 0 :(得分:6)

要从Firebase中删除某个项目,您需要知道name(),当您致电push()向Firebase添加新项目时,会自动为您生成该文件。

因此您需要将名称绑定到范围:

$scope.providers.push({
  name: snapshot.name(),
  title: snapshotVal.title
});

然后,您可以将此名称传递给HTML中的removeProvider来电:

<div ng-repeat="provider in providers">
    <h3>{{ provider.title }}</h3>
    <button type="button" ng-click="removeProvider(provider.name)">Remove</button>
</div>

并使用它在Firebase上调用remove

$scope.removeProvider = function(name) {
  providersRef.child(name).remove();
};

正如@SharpieOne已经评论过的那样,如果你使用AngularFire库(在这种情况下特别是它的$asArray()方法),你会自动处理这个和许多其他事情。

答案 1 :(得分:0)

通过设置对象值null,ypu可以将其删除。请尝试以下代码

$scope.removeProvider = function() {
      var newProvider = {
        title: null
      };
     providersRef.push(newProvider);

    };