rea*_*lph 3 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>
Run Code Online (Sandbox Code Playgroud)
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() {
};
Run Code Online (Sandbox Code Playgroud)
我已经创建了一个被调用的函数,removeProvider但无法解决其中的内容.我意识到我必须以某种方式定位特定项目,然后将其从列表中删除.我只是不确定如何.
任何帮助都将不胜感激.提前致谢!
要从Firebase中删除项目,您需要知道它name(),当您致电push()向Firebase添加新项目时,会自动为您生成该项目.
因此,您需要将名称绑定到范围:
$scope.providers.push({
name: snapshot.name(),
title: snapshotVal.title
});
Run Code Online (Sandbox Code Playgroud)
然后,您可以removeProvider通过HTML 将此名称传递给您:
<div ng-repeat="provider in providers">
<h3>{{ provider.title }}</h3>
<button type="button" ng-click="removeProvider(provider.name)">Remove</button>
</div>
Run Code Online (Sandbox Code Playgroud)
并使用它来调用removeFirebase:
$scope.removeProvider = function(name) {
providersRef.child(name).remove();
};
Run Code Online (Sandbox Code Playgroud)
正如@SharpieOne已经评论过的那样,如果你使用AngularFire库(在这种情况下特别是它的$asArray()方法),这个和许多其他东西会自动处理.
| 归档时间: |
|
| 查看次数: |
8071 次 |
| 最近记录: |