1

只需使用 AngularFire CRUD 应用程序即可完成。我的问题是弄清楚如何为重复的项目动态生成 Firebase 引用,以便我可以 .remove() 它。认为也许“这个”会有效,但不是。我能够推送和编辑,只是坚持如何删除 ng-repeat 中的内容。

谢谢,

应用程序在这里: http: //powerful-stream-7060.herokuapp.com/#/admin

HTML

        <div id="team" ng-hide ng-repeat="teamMember in team">
            <h4><div ng-model="teamMember.name" contentEditable>{{teamMember.name}}</div></h4>
            <code><div ng-model="teamMember.imgUrl" contentEditable>{{teamMember.cost | noFractionCurrency}}</div></code>
            <p><div ng-model="teamMember.position" contentEditable></div></p>
            <button ng-click="removeItem()" style="color:red;">[x]</button>
        </div>

JS

        var teaUrl = new Firebase("https://eco-grow.firebaseio.com/team");
        angularFire(teaUrl, $scope, "team");
        $scope.teammate = {};
        $scope.teammate.name = "";
        $scope.teammate.position = "";
        $scope.teammate.imgUrl = "";

        $scope.scout = function() {
             teaUrl.push($scope.teammate);
        }
        $scope.removeItem = function () {
            $scope.ref().remove(this);
        };
4

4 回答 4

2

假设 team 是一个队友对象数组,只要 $scope.team 仍然被绑定,你应该可以将队友项从数组中拼接出来。您可能必须传递项目的 ngRepeat $index$scope.removeItem = function (itemindex) { $scope.team.splice(itemindex,1); };

另请注意,angularFire 是异步的并返回一个承诺,并且 $scope.team 在您声明其他函数时可能仍为空。您可能想使用angularFire(teaUrl, $scope, "team").then(function(cb){ do stuff with $scope.team & cb() to unbind})

于 2013-11-06T16:02:14.883 回答
1

您可以使用传递给 removeItem 方法的索引来删除项目,如下所示:

<div id="team" ng-hide ng-repeat="teamMember in team">
            <h4><div ng-model="teamMember.name" contentEditable>{{teamMember.name}}</div></h4>
            <code><div ng-model="teamMember.imgUrl" contentEditable>{{teamMember.cost | noFractionCurrency}}</div></code>
            <p><div ng-model="teamMember.position" contentEditable></div></p>
            <button ng-click="removeItem({{$index}})" style="color:red;">[x]</button>
        </div>

并从团队数组中删除该项目。

$scope.removeItem = function (index) {
            $scope.team.splice(index, 1);
        };
于 2013-11-06T15:58:25.133 回答
1

我就是这样做的。看起来更干净,但我喜欢$index之前提出的建议。

<div id="team" ng-hide ng-repeat="(ref, teamMember) in team">
      <button ng-click="removeItem(ref)" style="color:red;">[x]</button>
</div>
于 2014-03-26T21:10:45.260 回答
0

您可以使用项目的容器,如AngularFire 快速入门中的示例(单击“index.html”):

<button ng-click="team.$remove(teamMember)">Delete team member</button>

于 2016-02-01T14:55:06.620 回答