角度,单击穿过阵列

Angular, click through array

本文关键字:阵列 单击 角度      更新时间:2023-09-26

我有一个变量被设置为数组索引,我想在单击时尝试循环使用它。我最初设置为:

 $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];
}

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

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

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

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

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

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