Use a member of the scope to represent the current item.
HTML
<div data-ng-app="exampleModule" data-ng-controller="exampleController">
<div>
<button data-ng-click="changeDestination(1)">
Next
</button>
<button data-ng-click="changeDestination(-1)">
Prev
</button>
</div>
<div class="dest-container">
<div class="dest-field dest-price-field">
<div class="dest-title">Price:</div>
<div class="dest-content">{{ current.price }}</div>
</div>
<div class="dest-field dest-name-field">
<div class="dest-title">Name:</div>
<div class="dest-content">{{ current.name }}</div>
</div>
<div class="dest-field dest-weather-field">
<div class="dest-title">Weather:</div>
<div class="dest-content">{{ current.weather }}</div>
</div>
</div>
</div>
This will create a one display, displaying $scope.current.
I have created a minimal complete example with your destination array.
Javascript
(function(angular) {
"use strict";
var exampleModule = angular.module('exampleModule', []);
exampleModule.controller('exampleController', ['$scope', function($scope) {
$scope.destinations = [
{
name: "Rome",
weather: "sunny",
price: "$2999"
},
{
name: "Paris",
weather: "cloudy",
price: "$4500"
}
];
$scope.currentItem = 0;
$scope.current = $scope.destinations[$scope.currentItem];
$scope.changeDestination = function(diff) {
$scope.currentItem += diff;
if ($scope.destinations.length) {
while ($scope.currentItem >= $scope.destinations.length)
$scope.currentItem -= $scope.destinations.length;
while ($scope.currentItem < 0)
$scope.currentItem += $scope.destinations.length;
} else {
$scope.currentItem = 0;
}
$scope.current = $scope.destinations[$scope.currentItem];
};
}]);
}(angular));
The page loads AngularJS 1.4.8 before running the javascript code.
The same thing can be used for a range of items, you can slice the array and set an array in $scope.current then use ng-repeat to show the items to implement pagination.
ng-repeat. Should really do more research before asking here