0

我正在尝试学习 AngularJS。对于我的第一个项目,我想创建一个小型记分应用程序。我正在从 JSON 文件中获取数据,然后我想根据谁的得分在屏幕上更新它。

我似乎无法弄清楚如何使用 Angular 更新特定的目标字段。我当前的应用程序将新行推送到记分表:

'use strict';

/* Controllers */

function ScoreKeeper($scope, $http) {

  $http.get('json/hometeam.json').success(function(data) {
    $scope.hometeam = data;
  });

  $scope.addGoal = function() {
    $scope.hometeam.push({goals: +1});
  };
}

这是我目前使用的表:

    <table class="table table-hover">
        <thead>
            <th>Player ID</th>
            <th>No.</th>
            <th>Name</th>
            <th>GP</th>
            <th>G</th>
            <th>A</th>
            <th>PIM</th>
            <th>Goal</th>
            <th>Assist</th>
            <th>Assist</th>
        </thead>
        <tbody>
            <tr ng-repeat="player in hometeam" >
                <td>{{player.playerid}}</td>
                <td>{{player.no}}</td>
                <td>{{player.name}}</td>
                <td>{{player.gp}}</td>
                <td>{{player.goals}}</td>
                <td>{{player.assists}}</td>
                <td>{{player.pim}}</td>
                <td><button class="btn btn-small" name="add-goal" type="button" ng-click="addGoal()"><i class="icon-plus"></i></button></td>                
            </tr>
        </tbody>
    </table>

我希望能够单击特定玩家的 addGoal,然后更新他们的总进球数。现在,当前函数正在创建一个新行,目标为 1,所有其他字段为空。

我对此很迷茫,数据在刷新时正确呈现,但是,我的更新功能不是。我知道 .push() 不是正确的方法,但是我似乎无法为 Angular 找到一个好的资源来弄清楚什么是正确的使用方法。任何帮助是极大的赞赏。谢谢你。

4

2 回答 2

1

您需要增加关联播放器项目的目标属性,而不是使用推送创建新的数组项目。 ng-click="addGoal(player)".

$scope.addGoal = function (player) {
    player.goals += 1;
};

要不就

ng-click="player.goals = player.goals + 1"

于 2013-02-05T03:14:50.530 回答
1

我猜您想将元素添加到player.goals中,对吗?

然后你可以这样做:

<button ng-click="addGoal($index)">

在js中:

$scope.addGoal = function(index) { $scope.hometeam[index].goals++; };
于 2013-02-05T03:17:58.593 回答