angular 학습 의 ngRoute 경로 메커니즘
길 은 AngularJS 의 중요 한 일환 입 니 다.프로젝트 의 페이지 를 연결 하여 프로젝트 를 구성 할 수 있 습 니 다.자주 사용 하 는 길 은 ngRoute 와 ui-route 가 있 습 니 다.제 가 먼저 ngRoute 를 말씀 드 리 겠 습 니 다.ngRoute 는 모듈 로 경로 와 심층 링크 에 필요 한 서비스 와 명령 을 제공 합 니 다.
주의 하 세 요.이전 글 과 달리 ngRoute 를 사용 하기 전에 다른 js 파일 angular-route.js 를 도입 해 야 합 니 다.
<script src="script/angular.min.js"></script>
<script src="script/angular-route.min.js"></script>
ngRoute 는 다음 과 같은 내용 을 포함 합 니 다.명칭.
유형
역할.
ngView
Directive
루트 의 다른 템 플 릿 은 사실 이 요소 에 삽 입 됩 니 다.
$routeProvider
Provider
경로 설정
$route
Service
각 경로 의 url,view,controller
$routeParams
Service
경로 매개 변수
ngRoute 를 사용 하 는 기본 절 차 는 다음 과 같 습 니 다.
color.html
<!DOCTYPE html>
<html>
<head>
<meta charset="uft-8"/>
<title></title>
</head>
<script src="script/angular.min.js"></script>
<script src="script/angular-route.min.js"></script>
<body ng-app="color">
<p><a href="#/" rel="external nofollow" rel="external nofollow" >Main</a></p>
<a href="#red" rel="external nofollow" rel="external nofollow" >Red</a>
<a href="#green" rel="external nofollow" rel="external nofollow" >Green</a>
<div ng-view></div>
</body>
<script>
var app = angular.module("color", ["ngRoute"]);
app.config(function ($routeProvider) {
$routeProvider
.when("/", {
templateUrl: "main.html",
controller: 'mainController'
})
.when("/red", {
templateUrl: "red.html",
controller: 'redController'
})
.when("/green", {
templateUrl: "green.html",
controller: 'greenController'
})
.otherwise('/');
});
app.controller('mainController',['$scope',function mainController($scope){
$scope.message='this is main page';
}]);
app.controller('redController',['$scope',function mainController($scope){
$scope.message='this is red page';
}]);
app.controller('greenController',['$scope',function mainController($scope){
$scope.message='this is green page';
}]);
</script>
</html>
red.html(다른 페이지 와 유사 하면 중복 되 지 않 습 니 다)
<div style="background: red">
{{message}}
</div>
예 는 매우 간단 합 니 다.우 리 는 경로 의 설정 만 이야기 합 니 다.위 에 있 는 것 이 모두 함께 쓰 여 있다 는 것 을 알 고 있 을 것 입 니 다.프로젝트 가 점점 커지 면 머리 가 아 프 지 않 을 것 입 니 다.그러면 모듈 화 할 수 있 습 니까?각 모듈 마다 직접적인 module,contrller,config 등 이 있 습 니 다.모듈 이 의존 하 는 기술 은 우리 가 이전에 말 한 모듈 의 글 에서 이미 말 한 적 이 있다.그러면 경로 가 있 는 상황 에서 어떻게 모듈 화 하 는 지 살 펴 보 자.
color.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="uft-8"/>
<title></title>
</head>
<script src="script/angular.min.js"></script>
<script src="script/angular-route.min.js"></script>
<script src="red.js"></script>
<script src="green.js"></script>
<script src="main.js"></script>
<body ng-app="color">
<p><a href="#/" rel="external nofollow" rel="external nofollow" >Main</a></p>
<a href="#red" rel="external nofollow" rel="external nofollow" >Red</a>
<a href="#green" rel="external nofollow" rel="external nofollow" >Green</a>
<div ng-view></div>
</body>
<script>
var app = angular.module("color", ["ngRoute","Module.red","Module.main","Module.green"]);
app.config(function ($routeProvider) {
$routeProvider.otherwise('/');
});
</script>
</html>
우리 의 color.html 파일 이 매우 간결 한 지 볼 수 있 습 니 다.config 의 경로 설정 에는$routeProvider.otherwise 방법 만 있 습 니 다.그러나 module 은 ngRoute 를 제외 한 세 개의 module:"Module.red","Module.main","Module.green"을 주입 하 였 습 니 다.이것 은 path 에 대응 하 는 경 로 를 모듈 로 추출 하여 전문 적 인 js 로 처리 하 였 습 니 다.그들 에 대응 하 는 템 플 릿 과 대응 하 는 것 같 습 니 다.red.html 에 대응 하 는 모듈 js 를 살 펴 보 겠 습 니 다.red.js
angular.module('Module.red', ['ngRoute'])
.config([
'$routeProvider',
function ($routeProvider) {
$routeProvider.when('/red', {
templateUrl: 'red.html',
controller: 'redController'
});
}
])
.controller('redController', [
'$scope',
function ($scope) {
$scope.color='red';
$scope.message = 'This is red page';
}
]);
경로 의 매개 변수그러면 루트 는 어떻게 파 라미 터 를 템 플 릿 페이지 에 전달 합 니까?우 리 는 위의 예 를 개조 하여 예 를 통 해 설명 한다.
main.js
angular.module('Module.main', ['ngRoute'])
.config([
'$routeProvider',
function ($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'main.html',
controller: 'mainController'
});
}
])
.controller('mainController', [
'$scope',
function ($scope) {
$scope.message = 'This is main page';
$scope.colors=['blue','yellow','pink'];
}
]);
전달 할 데이터 로 colors 의 배열 을 초기 화 했 습 니 다.main.html
{{message}}
<br>
<ul>
<li ng-repeat="color in colors">
<a href="#/color/{{color}}" rel="external nofollow" >{{color}}</a>
</li>
</ul>
ng-repeat 순환 을 통 해 a 링크 를 만 들 고 배열 의 요 소 는 링크 를 통 해 들 어 옵 니 다.colorId.js
angular.module('Module.colorId', ['ngRoute'])
.config([
'$routeProvider',
function ($routeProvider) {
$routeProvider
.when('/color/:colorId', {
templateUrl: 'colorId.html',
controller: 'colorIdController'
});
}
])
.controller('colorIdController', [
'$scope','$routeParams',
function ($scope,$routeParams) {
$scope.color = $routeParams.colorId;
$scope.message = 'This is ' +$routeParams.colorId +' page';
}
]);
여기에 colorId 모듈 을 정의 합 니 다.:colorId 를 통 해 들 어 오 는 매개 변 수 를 일치 시 킵 니 다.여기 서 일치 하 는 것 은 배열 의 요소 입 니 다.예 를 들 어/color/blue 는 blue 와 일치 합 니 다.colorId.html
<div style="background: {{color}}">
{{message}}
</div>
마지막 으로 colorId 에 나타 납 니 다.여러 개의 매개 변수 라면 바로 뒤에 있 는/color/:colorId/:year/:month/:day 를 받 을 수 있 습 니 다.예 를 들 어/color/pink/2017/3/13.
지원*번호:/color/:color/lagecode/:largecode*/edit 일치/color/brown/lagecode/code/with/lashes/edit 이면 color 는 brown 에 일치 하고 largecode 는 code/with/lashes 에 일치 합 니 다.
지지번호:/color/:color/largecode/:largecode?/edit 는/color/brown/largecode/code/edit 와 일치 할 수 있 으 며,largecode 는 code 와 일치 합 니 다.
/color/:color/largecode/:largecode?/edit 는 일치/color/brown/lagecode/edit 와 일치 할 수 있 으 며,largecode 는 빈 값 과 일치 합 니 다.
경로 의 resolve
페이지 가 이동 할 때 데 이 터 를 불 러 오 는 가장 흔 한 상황두 가지 방법 으로 할 수 있다.
resolve 는 map 대상 입 니 다:
news.html
<html>
<head>
<meta charset="uft-8"/>
<title></title>
</head>
<script src="script/angular.min.js"></script>
<script src="script/angular-route.min.js"></script>
<body ng-app="ngst-news">
<div ng-controller="MainController">
<ul>
<li ng-repeat="news in newsAarry">
<a href="#/newsDetail/{{news.id}}" rel="external nofollow" >{{news.title}}</a>
</li>
</ul>
<div ng-view></div>
</div>
</body>
<script src="news.js" charset="UTF-8"></script>
<script src="newsDetail.js" charset="UTF-8"></script>
</html>
news.js
var news = angular.module("ngst-news", ["ngst-newsDetail"]);
news.controller("MainController", ["$scope", function ($scope) {
$scope.newsAarry = [{"id": "1", "title": " "},
{"id": "2", "title": " , , "},
{"id": "3", "title": " "}];
}]);
뉴스 페이지 는 뉴스 목록 입 니 다.목록 아래 에 ng-view 가 있 습 니 다.뉴스 목록 링크 아래 의 ng-view 를 클릭 하여 경로 전환 을 합 니 다.newsDetails.html
{{message}}
newsDetails.js
var news = angular.module("ngst-newsDetail", ['ngRoute']);
news.config(["$routeProvider",
function ($routeProvider) {
$routeProvider.when("/newsDetail/:newsId", {
templateUrl: 'newsDetail.html',
controller: 'newsDetailController',
resolve: {
content: ['$q', '$timeout', "$route", function ($q, $timeout, $route) {
var deferred = $q.defer();
$timeout(function () {
deferred.resolve(' id=' + $route.current.params.newsId);
}, 1000);
return deferred.promise;
}]
}
});
}])
.controller("newsDetailController", ['$scope', 'content',
function ($scope, content) {
$scope.message = content;
}]);
$route.current.params 를 사용 하여 인 자 를 얻 습 니 다.이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
SpringMvc+Angularjs 멀티 파일 대량 업로드SpringMvc 코드 jar 가방 commons-fileupload commons-io spring-mvc.xml 구성 Controller 로컬 저장 AngularJs 코드 Form 양식 커밋 위에서 말한 것은 여...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.