2016-09-17 2 views
0

Aus irgendeinem Grund wird weder Controller noch View nicht neu geladen, wenn ich URL Parameter ändere. Was ich habe geöffnet /events/1 eröffnet dann /events/2 und erwartet die current aktualisiert, aber es nichtReload Sicht auf Param Änderung

Mein Zustand ist :(config:

.state('events', { 
    url: "/events", 
    controller: 'EventsCtrl', 
    templateUrl: "Content/Directives/Navigator/navigator.html", 
}) 
.state('events.event', { 
    url: "/{id:int}", 
    reload: true, 
    template: '{{currentDate}}' 
}); 

Mein Controller :

function NavigatorCtrl($scope) { 
    $scope.currentDate = new Date(); 
} 

navigator.html:

<div class="row"> 
    <h3>Navigator</h3> 
    <ui-view/> 
</div> 

Warum wird es nicht aktualisiert? Wie kann ich den Status für die Aktualisierung der Ansicht bei jeder URL-Parameteränderung erzwingen?
Beachten Sie, ich schrieb "reload: true", aber es hat wahrscheinlich keinen Effekt, weil es normalerweise in Optionen beim Aufrufen von state.go() verwendet wird.
ps: Ich weiß, ich kann das konvertieren "$ scope.currentDate = new Date();" zu einer Funktion, aber wundern, wenn beschrieben Verhalten ist normal ...

+0

Ich denke, Sie sollten URL verwenden: "/ events/{id: int}" – Gerfried

+0

@Gerfried der Punkt im Namen des Staates bereits macht es ein Kind von 'Ereignissen' – charlietfl

+0

Scheint zu fehlen' Controller' für 'events.event 'Staat. Nicht klar, wo "NavigatorCtrl" wird geklammert – charlietfl

Antwort

0

Sie können für eine Standortänderung zu hören, und laden Sie Ihren Controller neu, sobald es ausgelöst wird.

$scope.$on('$routeChangeSuccess', function() { 
     $state.transitionTo($state.current, $stateParams, { reload: true, inherit: true, notify: true }); 
    }); 

Sollte funktioniert, aber ich habe es nicht in Plunker getestet. Wenn du mir deine App zur Verfügung stellen könntest, kann ich dein Beispiel beenden. Hoffe, es wird dir helfen!