Javascript 从Firebase中移除物品

Javascript 从Firebase中移除物品,javascript,angularjs,firebase,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&

我正在尝试了解如何从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>
我已经创建了一个名为
removeProvider
的函数,但无法确定要在其中放入什么。我意识到我必须以某种方式针对特定项目,然后将其从列表中删除。我只是不知道怎么做


在此方面的任何帮助都将不胜感激。提前谢谢

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

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

    };

要从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>

正如@SharpieOne已经评论的那样,如果您使用AngularFire库(在本例中特别是它的
$asArray()
方法),那么这和许多其他事情都会自动为您处理。

为什么不使用它将不起作用。此代码解析为
providersRef.push().set({title:null})
,它只会创建一个新的提供程序,然后将其删除。我尝试了上述操作,但遇到以下错误:
错误:Firebase.child失败:第一个参数是无效路径:“”。路径必须是非空字符串,并且不能包含“.”、“$”、“[”或“]”
。我已经装了AngularFire,所以我可以试着那样做。使用AngularFire进行此操作有什么好处吗?您是否检查了
removeProvider
name
的值?我的答案中的代码旨在回答您的问题“如何在我的Angular应用程序中删除Firebase项?”。您需要做一些调试工作。对不起,我当时有点紧张。通过将
提供程序ref.child(name)
记录到控制台,以确保它针对的是正确的项目,解决了问题。关于AngularFire方法,是否有任何理由/好处让你选择这条路线而不是上面答案中所列的路线?这两种方法都有好处:Firebase的好人创建AngularFire有很好的理由,但另一方面我(前面是个人意见)有时觉得它比直接使用Firebase Web/JavaScript API更复杂。在彻底研究之后,你必须自己决定。
<div ng-repeat="provider in providers">
    <h3>{{ provider.title }}</h3>
    <button type="button" ng-click="removeProvider(provider.name)">Remove</button>
</div>
$scope.removeProvider = function(name) {
  providersRef.child(name).remove();
};