Firstly I am sorry if I will be confusing, but I\'m solving this issue the whole evening, and I\'ve read dozens of SO questions and AngularJS articles, so I\'m not even sure
Can you try the following?
Change the way you are using $http.post (at both places). Try to use it like:
$http.post($scope.url, {'filterType': 'abc', 'letter': $routeParams.letter}).success(function(data) {
$scope.listItems = data;
});
This means your ng-repeat changes slightly:
ng-repeat="item in listItems"
Wrapping the initial "state" / defaults for the controller into a function, and calling it upon $viewContentLoaded
event helped. Here's my fix:
$scope.$on('$viewContentLoaded', $scope.init);
$scope.init = function() {
$scope.mainfilter = $routeParams.letter;
$scope.listItems = $http.post($scope.url, {'filterType': 'abc', 'letter': $routeParams.letter});
}
I still have no idea why if the default data was set only by assigning values right in the controller code was causing the view to be "stuck" to this data, so I'm willing to re-accept a better answer, explaining this voodoo.