1

AngularFire CRUD アプリでほぼ完了です。私の問題は、アイテムのfirebase参照を繰り返して動的に生成する方法を見つけて、.remove()できるようにすることです。' this ' が有効かもしれないと思ったのですが、そうではありません。プッシュして編集することができますが、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 は非同期で promise を返すことにも注意してください。 $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 に答える