20

removePlayer(playerId)ボタンがクリックされた場合、メソッドを呼び出そうとします。console.log()ただし、ステートメントを先頭に配置したため、メソッドが呼び出されないか、少なくともメソッド内のステートメントが実行されません。

コンソールが空なので、私は本当に無知です。これが私のコードです:

コントローラ:

function appController($scope) {
    $scope.players = [];
    var playercount = 0;

    $scope.addPlayer = function(playername) {

        $scope.players.push({name: playername, score: 0, id: playercount});
        playercount++;
    }

    function getIndexOfPlayerWithId(playerId) {
        for (var i = $scope.players.length - 1; i > -1; i--) {
            if ($scope.players[i].id == playerId)
                return i;
        }
    }

    $scope.removePlayer = function(playerId) {
        console.log("remove");
        var index = getIndexOfPlayerWithId(playerId);
        $scope.players.slice(index, 1);
    }
}
appController.$inject = ['$scope'];

HTML:

...
<table id="players">
        <tr ng-repeat="player in players">
            <td>{{player.name}}</td>
            <td>{{player.score}}</td>
            <td><button ng-click="removePlayer({{player.id}})">Remove</button></td>
        </tr>
    </table>
...
4

3 に答える 3

38

{{ }}ng-click 式で中括弧 ( ) を使用しないでください。あなたは書くべきです:

<button ng-click="removePlayer(player.id)">Remove</button>

于 2012-11-08T19:39:11.653 に答える
4

ng-repeat新しいスコープを作成するため、何が何であるかわかりませんremovePlayer。次のようなことができるはずです。

<table id="players">
    <tr ng-repeat="player in players">
        <td>{{player.name}}</td>
        <td>{{player.score}}</td>
        <td><button ng-click="$parent.removePlayer({{player.id}})">Remove</button></td>
    </tr>
</table>

https://groups.google.com/forum/?fromgroups=#!topic/angular/NXyZHRTAnLAを参照してください

于 2012-11-08T19:31:34.410 に答える