1

I am trying to apply default params to a URL if they don't exist. Successively, I copy URL params to a local variable ($scope.params) and then load content:

// If limit and sort params are defined
if ($location.search().hasOwnProperty('limit') && $location.search().hasOwnProperty('sort')) {
    // Update scope params
    $scope.params = $location.search();

    // Load content
    $scope.loadContent();
} else {
    // Merge URL params and scope params; don't override URL params
    $location.search(utilityFactory.mergeObjects($location.search(), $scope.params, false)); // REMEMBER THIS AS #1

    // Replace browser history entry
    $location.replace();
}

I have another function that I invoke when changes to $scope.params are made to update URL params:

$scope.updateParams = function () {
    // Reset pagination
    delete $scope.params.skip;

    // Update URL params
    $location.search($scope.params); // REMEMBER THIS AS #2
};

In #1, the controller gets initialized and the control goes into if(){} instead of else{}. Perfect. However, in #2, the $location.search() does not refresh the controller. If I do a force reload after #2 using $route.reload(), the controller gets initialized twice.

What am I doing wrong?

Karma
  • 2,196
  • 1
  • 22
  • 30
  • possible duplicate of [AngularJS $location not changing the path](http://stackoverflow.com/questions/11784656/angularjs-location-not-changing-the-path) – Paul Sweatte May 30 '15 at 06:09

0 Answers0