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
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.