0

ng-repeat(単純なテーブル)のボタンを表示/非表示にしようとしています。削除ボタンが適合ボタンに置​​き換えられました。

これが私のコードです

..... Angular stuff .....

function ContactsCtrl($scope, $http) {
    $scope.order = '-id';
    $scope.currentPage = 0;
    $scope.pageSize = 15;
    $http.get('/events/<%= @event.id -%>/contacts.json').success(function(data) {
        $scope.contacts = data;
        $scope.numberOfPages=function(){
            return Math.ceil($scope.contacts.length/$scope.pageSize);
        }
    });

    $scope.clickDelete = function(e,t) {
        console.log("delete");
            // rest api stuff...
        $scope.contacts.splice(e, 1); // This WORKS!
    };
    $scope.showDelete = function(e,t) {
        e.showDeleteButton = true; // This DOES NOT
    };
}

そしてHTMLで:

 <tr ng-repeat="contact in contacts | filter:search | orderBy:order |      startFrom:currentPage*pageSize | limitTo:pageSize">
<td><a href="/contacts/{{contact.id}}/edit">{{contact.email}}</a></td>

                        ...
<td><a href="#" ng-click="showDelete(contact)" class="btn btn-small">delete</a>
<a href="/contacts/{{contact.id}}" ng-show="showDeleteButton" ng-click="clickDelete(contact)" class="btn btn-small btn-danger">confirm</a>
    </td>
</tr>
4

3 に答える 3

1

showDelete 関数から値を返していないようです。また、JSON オブジェクト 'showDeleteButton' に直接バインドできるプロパティがあるようです。

plnkr の例: http://plnkr.co/edit/eZTFyw9tGeWEfYw0U0I8

于 2013-03-14T16:29:17.537 に答える
0

あなたがやろうとしているのは、実際に削除を実行する確認ボタンを表示するフラグを削除ボタンに設定させることですよね? ng-repeat要素ごとに新しい子スコープを作成するため、子スコープに「確認可能」フラグを設定してそれを使用できます(fiddle):

<a ng-click="confirmable = true">delete</a>
<a ng-show="confirmable" ng-click="clickDelete(contact)">confirm</a>
<a ng-show="confirmable" ng-click="confirmable = false">cancel</a>

contactまた、オブジェクトを関数に渡し、clickDeleteそれを配列へのインデックスとして使用しているように見えるので、なぜそれが機能するのかわかりません。フィドルはindexOf、削除するインデックスを見つけるために使用します。

于 2014-05-23T16:15:05.900 に答える