webentwicklung-frage-antwort-db.com.de

Wie kann ich in AngularJS einen Abfrageparameter festlegen, ohne eine Route zu erstellen?

Meine Angular App ermöglicht dem Benutzer das Laden eines Elements. In diesem Fall möchte ich eine Abfragezeichenfolge festlegen, die die ID des Elements enthält, damit der Benutzer die Seite aktualisiert (oder aktualisieren möchte) link to it), die URL ist bereits festgelegt (es ist bereits ein Code vorhanden, der das Element lädt, wenn die ID in $ routeParams vorhanden ist).

Wie kann ich diesen Abfrageparameter festlegen, ohne eine Route zu verursachen? Es gibt andere Dinge auf der Seite, die zurückgesetzt werden (einschließlich eines Plugins, das alle seine Daten neu laden muss), wenn eine Route passiert. Daher ist es wichtig, dass sich nur die Abfrageparameter ändern.

Kurz gesagt, wenn ich Artikel 123 lade, möchte ich nur, dass sich die URL ändert von:

www.myurl.com/#/Items

zu:

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

ohne dass ein Routing stattfindet.

Wie geht das am besten?

72
Mike Pateras

Setzen Sie in Ihrer $ routeProvider Konfiguration reloadOnSearch auf false:

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

verwenden Sie in Ihrem Controller $location.search(), um den id -Parameter festzulegen:

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