Comment définir un paramètre de requête dans AngularJS sans faire un itinéraire?

Mon application Angular permet à l’utilisateur de charger un élément et, lorsque cela se produit, j’aimerais définir une chaîne de requête contenant l’ID de l’élément afin que, si l’utilisateur actualise la page (ou souhaite la lier), l’URL soit déjà set (il y a déjà du code en place qui charge l’élément si l’ID est présent dans $ routeParams).

Comment puis-je définir ce paramètre de requête sans provoquer d’itinéraires? Il y a d’autres choses sur la page qui seront réinitialisées (y compris un plugin qui devra recharger toutes ses données) si un itinéraire se produit, il est donc important que le paramètre de requête change uniquement.

En bref, lorsque je charge l’article 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 routage.

Quelle est la meilleure façon de faire cela?

Dans votre configuration $ routeProvider , définissez 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);