2016-05-05 10 views
1

Ich hatte eine Route mit einem param funktioniert aber dann einige Child Routen hinzugefügt und jetzt wird es nicht aktualisiert.UI Router stateParams nicht in untergeordneten Routen aktualisieren

Ereignis-Schablone

<a ui-sref="event.detail({id: event.id})" ng-repeat="event in events"> 
    Event {{event.id}} 
</a> 

UI Router

.state('event', { 
    url: '/event', 
    views: { 
     'event': { 
      template: ..., // shown above 
      controller: 'Event' 
     } 
    } 
}) 
.state('event.detail', { 
    url: '/:id', 
    views: { 
     'event-detail': { 
      template: ..., 
      controller: 'EventDetail' // shows a single event 
     } 
    } 
}) 
// tabs to switch between the different details 
.state('event.detail.info', { 
    url: '/info', 
    views: { 
     'event-info': { 
      template: ... 
     } 
    } 
}) 
.state('event.detail.map', { 
    url: '/map', 
    views: { 
     'event-map': { 
      template: ... 
     } 
    } 
}) 
.state('event.detail.chat', { 
    url: '/chat', 
    views: { 
     'event-chat': { 
      template: ... 
     } 
    } 
}) 

-Controller

function EventDetail($scope, $stateParams) { 
    $scope.getEventDetails = getEventDetails; 

    $scope.getEventDetails($stateParams.id); 

    function getEventDetails(id) { 
     console.log(id); // returns correct first time, then nothing. Used to work every time! 
     ... 
    } 
} 

Run durch von dem, was falsch läuft:

  • Klick auf Event 1
  • url Änderungen event/1 und bekommt die richtigen Ereignisdetails
  • gehen zurück zur Liste und klicken Sie auf Event 2
  • url Änderungen an event/2 sondern zeigt Details zur Veranstaltung 1
  • Klicken Sie auf die Registerkarte Info, Karte oder Chat und die URL ändert sich von event/2 zu event/1/info, event/1/map und event/1/chat
+0

Was macht der 'Ereigniszustand'? Zeigt es etwas? –

+0

Ja, die Vorlage in der Frage wird vom Ereignisstatus gerendert. Es zeigt eine Liste aller Ereignisse an. – barro32

+0

Ich denke, das ist was passiert, zweideutige Routen. Url: 'event/detail/info' durchläuft' event/detail /: id' sowie 'event/detail/info'. Daher ist es mehrdeutig. –

Antwort

1

Die Lösung war Benutzer cache: false in den event.detail Staaten und es ist Kind Staaten.

Verwandte Themen