好了,我有一个angularfire应用程序,可以将文本条目发送到firebase,但我在编写从firebase中删除文本条目的函数时遇到了麻烦。
这是我的HTML
<button class="btn btn-secondary" ng-click="deleteAll()">Remove All</button>
<ul class="messages">
<li ng-repeat="item in list" class="item panel">
<h3>{{item.name}}</h3>
<p>{{item.message}}</p>
<button class="btn" ng-click="deleteThis()">Delete</button>
</li>
</ul>deleteThis用于删除按钮所附加的单个项,而deleteAll用于删除所有项。
var myApp = angular.module("myApp",["firebase"]);
myApp.controller("SampleCtrl", function($scope, $firebaseArray) {
var list = $firebaseArray(new Firebase("https://writeup.firebaseio.com/"));
$scope.list = list;
$scope.submit = function(){
var name = document.getElementById("name").value,
message = document.getElementById("message").value;
list.$add({ name: name, message: message }).then(function(ref) {
var id = ref.key();
list.$indexFor(id);
});
}
$scope.deleteAll = function(){
$scope.id.$remove();
};
$scope.deleteThis = function(id, name, message){
$scope.list.$remove(id);
}
});发布于 2016-01-31 02:43:30
在超文本标记语言中,将该项作为参数传递给deleteThis函数。
<ul class="messages">
<li ng-repeat="item in list" class="item panel">
<h3>{{item.name}}</h3>
<p>{{item.message}}</p>
<button class="btn" ng-click="deleteThis(item)">Delete</button>
</li>
</ul>在你的控制器中使用参数。
$scope.deleteThis = function(item){
$scope.list.$remove(item);
};从文档中:
$remove(recordOrIndex)
从数据库和本地数组中删除记录。此方法返回一个promise,该promise在服务器上删除记录后解析。它将包含对已删除记录的Firebase引用。它接受数组索引或对数组中存在的项的引用。
发布于 2016-01-31 02:37:24
不能按ID删除记录,只能按记录的索引删除记录,也不能通过将整个项目传递给$remove()来删除记录。
解决方案是首先查找索引,然后将其传递给$remove()
$scope.list.$remove($scope.list.$indexFor(id))https://stackoverflow.com/questions/35105390
复制相似问题