Weird behavior of $index in ngRepeat

I'm using Ionic framework and I have the following code:

WORKS FINE:

<ion-slide-box on-slide-changed="slideChange()">
    <ion-slide ng-repeat="selected in instanceList">
        {{$index}}
        <div ng-if="currSlide==$index || !currSlide">
            CONTENT
        </div>
    </ion-slide>
</ion-slide-box>

DOESN'T WORK:

<ion-slide-box on-slide-changed="slideChange()">
    <ion-slide ng-repeat="selected in instanceList">
        <div ng-if="currSlide==$index || !currSlide">
             CONTENT
        </div>
    </ion-slide>
</ion-slide-box>

For those who are not familiar with Ionic, this function ensures me that currSlide is always updating its value and it's always the same value of $index:

$scope.slideChange = function() {
    $scope.currSlide = $ionicSlideBoxDelegate.currentIndex();
};

More details: When I say that the second code doesn't work: the content of the first slide appears, but when I change slides, the content of the div doesn't appear. In the first code everything appears just fine (also the $index I am printing).

CODEPEN: http://codepen.io/anon/pen/mdsIr

The two-way data binding {{}} of {{$index}} has a $watch in the directive, so removing the {{}} removes a $watch that updates the slides.