我有一个设置为数组索引的变量,我想在点击时尝试循环它。我最初设置如下:
$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];
}
答案 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];