I've added a few variables into the template because I want to update more than name i.e.
<div class="carousel-item" ng-click="vm.onSelect({item:vm.ngModel})">
<div class="circle">
<span ng-bind="::vm.ngModel.title"></span><br>
</div>
<div class="scenes" ng-show="::vm.ngModel.scenes.length > 0">
<i class="icon ion-aperture"></i><span ng-bind="::vm.ngModel.scenes.length"></span>
</div>
</div>
$scope.carouselData.length = 1;
Entities.locations.forEach(function(location){$scope.carouselData.push(location)});
$scope.$broadcast('a-carousel.arrayupdated', 'carousel-1');
However when the carousel gets updated the new ngModel.scenes.length or ::vm.ngModel.title are not being updated, the old ones remain (I can trace that the $scope.carouselData is getting the new data)
However if I add a whole new item it's fine.