Javascript 使用ng repeat递增向上投票

Javascript 使用ng repeat递增向上投票,javascript,angularjs,Javascript,Angularjs,我是个新手,我正在努力学习。我在控制器中有以下数组。这代表两名球员(来自两支球队)的交易。 我认为我的逻辑是正确的,为什么我的代码不能工作 $scope.unique = [["Name", "Name", "Name", "Name", {"upvotes": 0}]] //more can be added to the outer array, in sets of five like this. 在同一控制器中,我具有以下功能: $scope.incrementUpvotes = fu

我是个新手,我正在努力学习。我在控制器中有以下数组。这代表两名球员(来自两支球队)的交易。
我认为我的逻辑是正确的,为什么我的代码不能工作

$scope.unique = [["Name", "Name", "Name", "Name", {"upvotes": 0}]]
//more can be added to the outer array, in sets of five like this.
在同一控制器中,我具有以下功能:

$scope.incrementUpvotes = function(value) {
       value[4].upvotes++;
       };
在我的角度视图中,我试图有一个ng重复,当点击这个区域时,ng click增加向上投票。upvote是有效的,但它只是针对前五个元素进行渲染,ng重复似乎不起作用

<div class="text-center" ng-repeat="value in unique">
                  <span ng-click="incrementUpvotes(value)">
                    {{value[0]}} and {{value[1]}} for {{value[2]}} and {{value[3]}} upvotes: {{value[4].upvotes}}
                  </span>
                </div>

{{value[0]}和{{value[1]}用于{{value[2]}和{{value[3]}投票:{{value[4]。投票}

我觉得你的结构有点混乱。试着这样做:

JS

HTML


{{v}
UpVoces:{{value.upvoces}}

在这里查看它的工作情况(单击行以增加投票):

当您的逻辑正确时,错误来自于您的数组是多维的这一事实。要按原样解决问题,请看Anik的答案

但是,让我建议一种更好的结构,它将使您的代码更可读、更易于维护,并且更符合JavaScript约定

$scope.teams = [
  {
      members: ["Name1", "Name2", "Name3", "Name4"],
      upvotes: 0
  },
  {
      members: ["Name5", "Name6", "Name7", "Name8"],
      upvotes: 0
  }
];
现在,您的upvote函数更具可读性,如下所示:

$scope.incrementUpvotes = function(team) {
   team.upvotes++; 
};
您的HTML现在也更干净了:

<div class="text-center" ng-repeat="team in teams">
   <span ng-click="incrementUpvotes(team)">
   {{team.member[0]}} and {{team.member[1]}} for {{team.member[2]}} and {{team.member[3]}} upvotes: {{team.upvotes}}
   </span>
</div>

{{team.member[0]}和{{team.member[1]}代表{{team.member[2]}和{team.member[3]}投票:{{{team.upvoces}

太棒了,非常感谢,我就快到了,但我似乎无法将所有内容正确地推到$scope.teams。我做错了什么?现在递增器可以工作了,但是ng repeat部分(显示其余的值)不能工作。你能把它简化成一个实际工作的例子吗?这样我就能知道你想做什么。你可以假设你从你的服务中得到的数据,然后硬编码。当然,明天就可以了。我今天的编码都累坏了!我认为我们已经提供了充分的答案。这取决于你如何应用它。我们无法为您编写代码。
$scope.incrementUpvotes = function(team) {
   team.upvotes++; 
};
<div class="text-center" ng-repeat="team in teams">
   <span ng-click="incrementUpvotes(team)">
   {{team.member[0]}} and {{team.member[1]}} for {{team.member[2]}} and {{team.member[3]}} upvotes: {{team.upvotes}}
   </span>
</div>