AngularJs $watch on $location.search doesn't work when reloadOnSearch is false
In case you don't use Angular's route resolution or you just want to know whenever $location changes, there is an event just for that purpose
$rootScope.$on('$locationChangeSuccess', function(event){
var url = $location.url(),
params = $location.search();
})
You can listen for $routeUpdate
event in your controller:
$scope.$on('$routeUpdate', function(){
$scope.sort = $location.search().sort;
$scope.order = $location.search().order;
$scope.offset = $location.search().offset;
});