使用ng-repeat增加upvote

时间:2015-09-23 04:42:47

标签: 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 = function(value) {
       value[4].upvotes++;
       };

在我的Angular视图中,我尝试进行ng-repeat,单击此区域时,ng-click会增加upvote。 upvote正在工作,但它仅针对前五个元素进行渲染,ng-repeat似乎不起作用。

<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>

2 个答案:

答案 0 :(得分:2)

虽然您的逻辑是正确的,但错误来自于您的阵列是多维的。要解决这个问题,请看Anik的答案。

但是,让我建议一个更好的结构,使您的代码更易读,可维护并更符合JavaScript惯例

char[]

所以现在你的upvote函数更具可读性:

String pswd = new String(pf.getPassword());
if(pswd.equals(password)) {
  nw.setVisible(true);
}

现在你的HTML更清洁了:

$scope.teams = [
  {
      members: ["Name1", "Name2", "Name3", "Name4"],
      upvotes: 0
  },
  {
      members: ["Name5", "Name6", "Name7", "Name8"],
      upvotes: 0
  }
];

答案 1 :(得分:0)

我认为你的结构有点令人困惑。尝试这样的事情:

JS

<copy todir="${srcdist.layout.dir}/etc/wsdl/latest"  flatten="true" overwrite="true">
<sort>
 <fileset dir="../../releases">             
 <include name="**/*.wsdl"/>        
 </fileset>
</sort>
 </copy>

HTML

  $scope.unique = [{team: ["Name", "Name", "Name", "Name"], "upvotes": 0},
                   {team: ["Name", "Name", "Name", "Name"], "upvotes": 0}]

  $scope.incrementUpvotes = function(value) {
       value.upvotes++;
    };

看到它在这里工作(点击行增加投票):http://www.bootply.com/7LOE1zpE4z