AngularJS-Routing

In diesem Kapitel führen wir in das AngularJS-Routing ein.

AngularJS-Routing ermöglicht uns den Zugriff auf unterschiedliche Inhalte über verschiedene URLs.

Mit AngularJS lassen sich Multi-View-Single-Page-Webanwendungen (SPA) implementieren.

Normalerweise hat unsere URL die Form vonhttp://example.com/first/page, aber in Single-Page-Webanwendungen verwendet AngularJS#! + Marker, um dies zu implementieren, zum Beispiel:

http://example.com/#!/first
http://example.com/#!/second
http://example.com/#!/third

Hinweis: In Versionen vor Angular 1.6 wird Routing über# + Marker implementiert.

Wenn wir auf einen der obigen Links klicken, ist die vom Server angeforderte Adresse dieselbe (http://example.com/). Denn der Inhalt nach dem #!-Zeichen wird vom Browser beim Senden einer Anfrage an den Server ignoriert. Also müssen wir die Funktionalität des Inhalts nach dem #!-Zeichen auf der Clientseite implementieren. AngularJS-Routing verwendet#! + Marker, um uns zu helfen, verschiedene logische Seiten zu unterscheiden und verschiedene Seiten an die entsprechenden Controller zu binden.

Im obigen Diagramm sehen wir, dass zwei URLs erstellt werden: /ShowOrders und /AddNewOrder. Jede URL hat eine entsprechende Ansicht und einen entsprechenden Controller.

Sehen wir uns nun ein einfaches Beispiel an:

AngularJS-Beispiele

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>AngularJS-Routing-Beispiel - Beispiel-Tutorial</title> <script src="https://cdn.bootcss.com/angular.js/1.7.0/angular.min.js"></script> <script src="https://cdn.bootcss.com/angular.js/1.7.0/angular-route.min.js"></script> </head> <body ng-app='routingDemoApp'> <h2>AngularJS-Routing-Anwendung</h2> <ul> <li><a href="#!/">Startseite</a></li> <li><a href="#!/computers">Computer</a></li> <li><a href="#!/printers">Drucker</a></li> <li><a href="#!/blabla">Andere</a></li> </ul> <div ng-view></div> <script>angular.module('routingDemoApp',['ngRoute']) .config(['$routeProvider', function($routeProvider){ $routeProvider .when('/',{template:'Dies ist die Startseite'}) .when('/computers',{template:'Dies ist die Seite der Computerkategorie'}) .when('/printers',{template:'Dies ist die Druckerseite'}) .otherwise({redirectTo:'/'}); }]);</script> </body> </html>

Ausprobieren »

Beispielanalyse:

  • 1. Laden Sie die JS-Datei, die das Routing implementiert: angular-route.js.

  • 2. Fügen Sie das ngRoute-Modul als Abhängigkeitsmodul des Hauptanwendungsmoduls hinzu.

    angular.module('routingDemoApp',['ngRoute'])
    
  • 3. Verwenden Sie die Direktive ngView.

    <div ng-view></div>

    Der HTML-Inhalt innerhalb dieses div ändert sich entsprechend den Routenänderungen.

  • 4. Konfigurieren Sie $routeProvider. AngularJS $routeProvider wird verwendet, um Routingregeln zu definieren.

    module.config(['$routeProvider', function($routeProvider){
        $routeProvider
            .when('/',{template:'这是首页页面'})
            .when('/computers',{template:'这是电脑分类页面'})
            .when('/printers',{template:'这是打印机页面'})
            .otherwise({redirectTo:'/'});
    }]);
    

Die config-Funktion eines AngularJS-Moduls wird verwendet, um Routingregeln zu konfigurieren. Mithilfe der config-API lassen wir $routeProvider in unsere Konfigurationsfunktion injizieren und verwenden die $routeProvider.when-API, um unsere Routingregeln zu definieren.

$routeProvider stellt uns die Funktionen when(path,object) und otherwise(object) zur Verfügung, um alle Routen der Reihe nach zu definieren. Die Funktion when enthält zwei Parameter:

  • Der erste Parameter ist eine URL oder eine URL-Regex-Regel.
  • Der zweite Parameter ist das Routing-Konfigurationsobjekt.

Routing-Konfigurationsobjekt

AngularJS-Routing kann auch über verschiedene Templates implementiert werden.

Der erste Parameter der Funktion $routeProvider.when ist eine URL oder eine URL-Regex-Regel, und der zweite Parameter ist das Routing-Konfigurationsobjekt.

Die Syntaxregeln des Routing-Konfigurationsobjekts sind wie folgt:

$routeProvider.when(url, {
    template: string,
    templateUrl: string,
    controller: string, function oder  array,
    controllerAs: string,
    redirectTo: string, function,
    resolve: object<key, function>
});

Parameter description:

  • template:

    Wenn wir nur einfachen HTML-Inhalt in ng-view einfügen müssen, verwenden Sie diesen Parameter:

    .when('/computers',{template:'这是电脑分类页面'})
  • templateUrl:

    Wenn wir nur eine HTML-Template-Datei in ng-view einfügen müssen, verwenden Sie diesen Parameter:

    $routeProvider.when('/computers', {
        templateUrl: 'views/computers.html',
    });
    

    Der obige Code ruft den Inhalt der Datei views/computers.html vom Server ab und fügt ihn in ng-view ein.

  • controller:

    Funktion, String oder Array-Typ; die Controller-Funktion, die auf dem aktuellen Template ausgeführt wird und einen neuen Scope erzeugt.

  • controllerAs:

    String-Typ; legt einen Alias für den Controller fest.

  • redirectTo:

    Die Weiterleitungsadresse.

  • resolve:

    Geben Sie andere Module an, von denen der aktuelle Controller abhängt.

Beispiel

AngularJS-Beispiel

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>AngularJS-Routing-Beispiel - Beispiel-Tutorial</title> <script src="https://cdn.bootcss.com/angular.js/1.7.0/angular.min.js"></script> <script src="https://cdn.bootcss.com/angular.js/1.7.0/angular-route.min.js"></script> <script type="text/javascript"> angular.module('ngRouteExample', ['ngRoute']) .controller('HomeController', function ($scope, $route) { $scope.$route = $route;}) .controller('AboutController', function ($scope, $route) { $scope.$route = $route;}) .config(function ($routeProvider) { $routeProvider. when('/home', { templateUrl: 'embedded.home.html', controller: 'HomeController' }). when('/about', { templateUrl: 'embedded.about.html', controller: 'AboutController' }). otherwise({ redirectTo: '/home' }); }); </script> </head> <body ng-app="ngRouteExample" class="ng-scope"> <script type="text/ng-template" id="embedded.home.html"> <h1> Startseite </h1> </script> <script type="text/ng-template" id="embedded.about.html"> <h1> Über uns </h1> </script> <div> <div id="navigation"> <a href="#!/home">Startseite</a> <a href="#!/about">Über</a> </div> <div ng-view=""> </div> </div> </body> </html>

Ausprobieren »
Weitere Erweiterungen