Aktualisieren Sie ui-router anzeigen, wenn sich der Zustand Parameter ändern?
Was ist die richtige Methode zum aktualisieren einer ui-router anzeigen, wenn sich der Zustand Parameter ändern?
Beispielsweise, wenn ich habe ein Staat wie:
.state("page.view", {
url: "/pages/:slug",
views: {
"": {
controller: "PageCtrl",
templateUrl: "page-view.html",
},
},
})
Und eine (falsche) controller, die wie folgt aussieht:
.controller("PageCtrl", function($scope, $state) {
$scope.page = loadPageFromSlug($state.params.slug);
})
Wie kann ich korrekt laden Sie eine neue $scope.page
wenn die $state.slug
verpasst?
Hinweis, dass die oben nicht funktioniert, wenn Sie sich von Seite zur anderen, weil der controller wird nur einmal ausgeführt, wenn die erste Seite geladen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde so etwas tun:
Ich wäre neugierig, wenn Sie einen besseren Weg finden - es kann ein Weg sein, um genau beobachten Sie den Wert der staatlichen slug, aber dieses ist sauber und klar artikuliert, was es ist, dass Sie Sie zu beobachten.
Ich bin wirklich nicht voll sicher, ob ich nicht etwas vermissen hier - aber-basierend auf snippets-dargestellt, die in Ihrer Frage:
PageCtrl
ist in Bezug auf Status " - Seite.view" und wird ausgeführt, so oft wie " - Seite.Blick" - Zustand wird ausgelöst"page.view"
Staat erklärt hat, param slug -url: "/pages/:slug",
, die trigger Zustand zu ändern - wenn es geändert wird$state.params
. Wir können$stateParams
(mehr UI-Router Weg, würde ich persönlich sagen)Gut, wenn alle, die richtige ist, wie gezeigt, in diese arbeiten plunker, wir können es so machen
resolver:
Angepasst state def:
Und die PageCtrl:
Überprüfen Sie alle in Aktion hier
Ich hatte dieses problem in ui-router 0.2.14. Nach dem Upgrade auf 0.2.18 einen parameter ändern, nicht das Feuer der erwarteten
$stateChange*
Veranstaltungen.