Angular,点击数组

时间:2015-03-07 18:38:20

标签: javascript angularjs

我有一个设置为数组索引的变量,我想在点击时尝试循环它。我最初设置如下:

 $scope.calenderState = ["day","week","month","year"];
 $scope.mod2m4 = $scope.calenderState[0];

并连接了一个发送mod2m4的点击功能,如:

 ng-click ="changeCal(mod2m4)" 

现在它会发送“日”。每次我点击它,我希望它增加到下一个项目,(所以一周),除非它的年份,然后回到一天。我该如何处理这种情况?

编辑: 我能够像这样解决它,但我想知道是否有更优雅的解决方案?

var ind = _.indexOf($scope.calenderState, current);
if(ind == 3){
    $scope.mod2m4 = $scope.calenderState[0];
}else{
    $scope.mod2m4 = $scope.calenderState[ind + 1];
}

2 个答案:

答案 0 :(得分:3)

也许尝试只将索引存储为范围变量,然后将增量操作抽象为函数(以处理环绕)

$scope.index = 0
$scope.increment = function() {
  $scope.index += 1;
  if ($scope.index > 3) {
    $scope.index = 0;
  }
}

然后在您的视图中,如果要显示该值,可以使用以下表达式:

<p>{{calendarState[index]}}</p>

答案 1 :(得分:1)

如果你不介意数组的顺序:

$scope.calenderState.push($scope.calenderState.shift());
$scope.mod2m4 = $scope.calenderState[0];