Javascript 从Firebase中移除物品
我正在尝试了解如何从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&
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();
};