It was the way I was creating the data. I needed to create an array with object. This code seems to fix the issue. Here is a link to a revised fiddle
<div class="day" ng-controller="Controller" >
{{hours}}
<div ng-click="hourClick($index)" ng-repeat="hour in hours" ng-switch="$index % 4" class="quarter-hour">
<div class="clock-back-1" ng-switch-when="0">{{$index}} - {{hour.id}}
</div>
<div class="clock-back-2" ng-switch-when="1">{{$index}} - {{hour.id}}
</div>
<div class="clock-back-3" ng-switch-when="2">{{$index}} - {{hour.id}}
</div>
<div class="clock-back-4" ng-switch-when="3">{{$index}} - {{hour.id}}
</div>
</div>
</div>
<script>
function Controller($scope){
$scope.hours = [];
for (var i=0;i<20;i++){
$scope.hours[i] = {"id":0};
}
$scope.hourClick = function(index){
$scope.hours[index].id = 1;
}
}
</script>