Um zwischen verschiedenen Ansichten zu wechseln, können Sie die Datei window.location (mithilfe des Dienstes $ location!) In der Datei index.html direkt ändern
<div ng-controller="Cntrl">
<div ng-click="changeView('edit')">
edit
</div>
<div ng-click="changeView('preview')">
preview
</div>
</div>
Controller.js
function Cntrl ($scope,$location) {
$scope.changeView = function(view){
$location.path(view); // path not hash
}
}
und konfigurieren Sie den Router so, dass er je nach Standort zu verschiedenen Partials wechselt (siehe hier https://github.com/angular/angular-seed/blob/master/app/app.js) ). Dies hätte den Vorteil der Historie sowie der Verwendung von ng-view.
Alternativ verwenden Sie ng-include mit verschiedenen Partials und verwenden dann einen ng-Schalter, wie hier gezeigt ( https://github.com/ganarajpr/Angular-UI-Components/blob/master/index.html ).
<a href="https://stackoverflow.com/edit">Edit</a>
Angular stellt sicher, dass durch den Klick kein erneutes Laden der Seite erstellt wird. Dieses Verhalten kann so geändert werden, dass es bei Bedarf ein erneutes Laden auslöst.Die bereitgestellte Antwort ist absolut korrekt, aber ich wollte sie für zukünftige Besucher erweitern, die dies möglicherweise etwas dynamischer tun möchten -
In der Ansicht -
In der Steuerung -
Gleiches Grundkonzept wie die akzeptierte Antwort, nur dynamischer Inhalt hinzufügen, um ein wenig zu verbessern. Wenn die akzeptierte Antwort dies hinzufügen möchte, werde ich meine Antwort löschen.
quelle
url
ist eigentlich die vollständige Webadresse, einschließlich des Protokolls (http: //) und allem. Wie von$location.path()
Ihrer Variablen impliziert , wird besser als beschriebenpath
.Ich habe ein Beispiel.
So sieht mein Dokument aus:
So sieht mein Teil aus:
So sieht meine Strg aus:
App ist mein Modul:
Hoffe das ist hilfreich!
quelle
Die Methode, die für alle vorherigen Antworten auf diese Frage verwendet wurde, schlägt vor, die URL zu ändern, was nicht erforderlich ist, und ich denke, die Leser sollten sich einer alternativen Lösung bewusst sein. Ich verwende UI-Router und $ stateProvider, um einer templateUrl einen Statuswert zuzuordnen, der auf die HTML-Datei für Ihre Ansicht verweist. Dann müssen Sie nur noch den $ state in Ihren Controller einfügen und $ state.go ('state-value') aufrufen, um Ihre Ansicht zu aktualisieren.
Was ist der Unterschied zwischen Angular-Route und Angular-UI-Router?
quelle
Dafür gibt es zwei Möglichkeiten:
Wenn Sie einen UI-Router verwenden oder
$stateProvider
wie folgt:Wenn Sie einen Winkelrouter verwenden oder Folgendes
$routeProvider
tun:quelle
Ohne die Standard-Routing-Umgebung (# / ViewName) vollständig zu überarbeiten, konnte ich Codys Tipp leicht modifizieren und es funktionierte hervorragend.
Der Controller
die Aussicht
Als ich versuchte, ein Kendo Mobile UI-Widget in eine eckige Umgebung zu integrieren, verlor ich den Kontext meines Controllers und das Verhalten des regulären Ankertags wurde ebenfalls entführt. Ich habe meinen Kontext innerhalb des Kendo-Widgets wiederhergestellt und musste eine Navigationsmethode verwenden ... das hat funktioniert.
Danke für die vorherigen Beiträge!
quelle
Hoffe das wird dir helfen
quelle
Diese kleine Funktion hat mir gute Dienste geleistet:
Sie benötigen nicht den vollständigen Pfad, sondern nur die Ansicht, zu der Sie wechseln
quelle