web-dev-qa-db-fra.com

Comment définir un paramètre de requête dans AngularJS sans effectuer de routage?

Mon Angular application permet à l'utilisateur de charger un élément. Si cela se produit, j'aimerais définir une chaîne de requête contenant l'ID de l'élément. Ainsi, si l'utilisateur actualise la page (ou souhaite le modifier), son lien), l’URL est déjà définie (il existe déjà un code qui charge l’élément si l’Id est présent dans $ routeParams).

Comment définir ce paramètre de requête sans provoquer de route? Il y a d'autres éléments sur la page qui seront réinitialisés (y compris un plug-in qui devra recharger toutes ses données) si un itinéraire se produit, il est donc important que seul le paramètre de requête change.

En bref, lorsque je charge l'élément 123, tout ce que je veux, c'est que l'URL change de:

www.myurl.com/#/Items

à:

www.myurl.com/#/Items?id=123

sans aucun acheminement.

Quelle est la meilleure façon de faire cela?

72
Mike Pateras

Dans votre $ routeProvider , configurez reloadOnSearch sur false:

$routeProvider
  .when('/items', {
    controller: 'ItemsCtrl',
    templateUrl: '/templates/items',
    reloadOnSearch: false
  },
  ...
);

et dans votre contrôleur, utilisez $location.search() pour définir le paramètre id:

$location.search('id', 123);
165
Stewie