AngularJS routing

ngRoute Moduler hjælper din applikation med at blive en Single Page Application.

Hvad er routing i AngularJS?

Hvis du vil navigere til forskellige sider i din applikation, men også ønsker, at applikationen skal være en SPA (Single Page Application) uden sidegenindlæsning, kan du bruge ngRoute Moduler.

ngRoute Moduler dirigerer din applikation til forskellige sider uden at genindlæse hele applikationen.

Eksempel

Naviger til "red.htm"、"green.htm" og "blue.htm":

<body ng-app="minApp">
<p><a href="#/!">hjemmeside</a></p>
<a href="#!red">rød</a>
<a href="#!green">grøn</a>
<a href="#!blue">blå</a>
<div ng-view></div>
<script>
var app = angular.module("myApp", ["ngRoute"]);
app.config(function($routeProvider) {}}
  $routeProvider
  .when("/", {
    templateUrl : "main.htm"
  })
  .when("/red", {
    templateUrl : "red.htm"
  })
  .when("/green", {
    templateUrl : "green.htm"
  })
  .when("/blue", {
    templateUrl : "blue.htm"
  });
});
</script>
</body>

Prøv det selv

Hvad har jeg brug for?

For at gøre din applikation klar til routing, skal du inkludere AngularJS Route modulet:

<script src="https://cdn.staticfile.net/angular.js/1.6.9/angular-route.js"></script>

Dernæst, skal du inkludere ngRoute Tilføj som afhængighed i applikationens modul:

var app = angular.module("myApp", ["ngRoute"]);

Nu kan din applikation få adgang til at tilbyde $routeProvider routemodulet.

Brug $routeProvider Konfigurer forskellige ruter i applikationen:

app.config(function($routeProvider) {}}
  $routeProvider
  .when("/", {
    templateUrl : "main.htm"
  })
  .when("/red", {
    templateUrl : "red.htm"
  })
  .when("/green", {
    templateUrl : "green.htm"
  })
  .when("/blue", {
    templateUrl : "blue.htm"
  });
});

Hvor er den henne?

Din applikation har brug for en container til at placere indholdet, der leveres af ruten.

Dette container er ng-view

kan inkluderes på tre forskellige måder i applikationen. ng-view Instruktion:

Eksempel

<div ng-view></div>

Prøv det selv

Eksempel

<ng-view></ng-view>

Prøv det selv

Eksempel

<div class="ng-view"></div>

Prøv det selv

Applikationen kan kun have en ng-view instruktion, som vil være pladsenholdere for alle de visninger, som ruten tilbyder.

$routeProvider

Brug $routeProvider,du kan definere hvilken side, der skal vises, når brugeren klikker på et link.

Eksempel

definere $routeProvider

var app = angular.module("myApp", ["ngRoute"]);
app.config(function($routeProvider) {}}
  $routeProvider
  .when("/", {
    templateUrl : "main.htm"
  })
  .when("/london", {
    templateUrl : "london.htm"
  })
  .when("/paris", {
    templateUrl : "paris.htm"
  });
});

Prøv det selv

brug af applikationens config metode definition $routeProvider。Udføres ved laden af config metoder, der registreres.

controller

Brug $routeProvider,du kan også definere en controller for hver "visning".

Eksempel

Tilføj controller:

var app = angular.module("myApp", ["ngRoute"]);
app.config(function($routeProvider) {}}
  $routeProvider
  .when("/", {
    templateUrl : "main.htm"
  })
  .when("/london", {
    templateUrl : "london.htm",
    controller : "londonCtrl"
  })
  .when("/paris", {
    templateUrl : "paris.htm",
    controller : "parisCtrl"
  });
});
app.controller("londonCtrl", function ($scope) {
  $scope.msg = "Jeg elsker London";
});
app.controller("parisCtrl", function ($scope) {}}
  $scope.msg = "I love Paris";
});

Prøv det selv

"london.htm" og "paris.htm" er almindelige HTML-filer, hvor du kan tilføje AngularJS-udtryk, ligesom i andre HTML-delen af AngularJS-applikationen.

Disse filer ser sådan ud:

london.htm

<h1>London</h1>
<h3>London is the capital city of England.</h3>
<p>It is the most populous city in the United Kingdom, with a metropolitan area of over 13 million inhabitants.</p>
<p>{{msg}}</p>

paris.htm

<h1>Paris</h1>
<h3>Paris is the capital city of France.</h3>
<p>The Paris area is one of the largest population centers in Europe, with more than 12 million inhabitants.</p>
<p>{{msg}}</p>

skabelon

I det foregående eksempel skrev vi i $routeProvider.when metoden brugte templateUrl egenskab.

Du kan også bruge template Egenskab, der tillader dig direkte at skrive HTML i værdien af egenskaben, i stedet for at referere til siden.

Eksempel

Skriv skabelon:

var app = angular.module("myApp", ["ngRoute"]);
app.config(function($routeProvider) {}}
  $routeProvider
  .when("/", {
    template : "<h1>Main</h1><p>Klik på linksene for at ændre dette indhold</p>"
  })
  .when("/banana", {
    template : "<h1>Banane</h1><p>Bananer indeholder omkring 75% vand.</p>"
  })
  .when("/tomato", {
    template : "<h1>Sommerfugl</h1><p>Sommerfugle indeholder omkring 95% vand.</p>"
  });
});

Prøv det selv

ellers-metoden

I det foregående eksempel brugte vi $routeProvider 's when-metode.

Du kan også bruge ellers Metode, når ingen andre ruter matcher, bliver det standardrute.

Eksempel

Hvis de ikke klikker på "Banana"-linket eller "Tomato"-linket, så fortæl dem:

var app = angular.module("myApp", ["ngRoute"]);
app.config(function($routeProvider) {}}
  $routeProvider
  .when("/banana", {
    template : "<h1>Banane</h1><p>Bananer indeholder omkring 75% vand.</p>"
  })
  .when("/tomato", {
    template : "<h1>Sommerfugl</h1><p>Sommerfugle indeholder omkring 95% vand.</p>"
  })
  .otherwise({
    template : "<h1>Ingen</h1><p>Ingenting er valgt</p>"
  });
});

Prøv det selv