AngularJS 라우팅


이 장에서는 AngularJS 라우팅을 소개합니다.

AngularJS 라우팅을 사용하면 다양한 URL을 통해 다양한 콘텐츠에 액세스할 수 있습니다.

다중 뷰 단일 페이지 웹 애플리케이션(SPA)은 AngularJS를 통해 구현할 수 있습니다.

일반적으로 URL은 http://php.cn/first/page 형식이지만 단일 페이지 웹 애플리케이션에서 AngularJS는 # + 태그 를 통해 구현됩니다. 예:

http://php.cn/#/first
http://php.cn/#/second
http://php.cn/#/third

클릭하면 위 중 하나에 연결 시 서버에서 요청하는 주소는 동일합니다(http://php.cn/). # 기호 뒤의 내용은 서버를 요청할 때 브라우저에서 무시되기 때문입니다. 그래서 클라이언트에서 # 번호 뒤에 콘텐츠의 기능을 구현해야 합니다. AngularJS 라우팅은 # + 표시 를 사용하여 다양한 논리적 페이지를 구별하고 다양한 페이지를 해당 컨트롤러에 바인딩하는 데 도움을 줍니다.

angular-routing.png

위 그래픽에서 /ShowOrders 및 /AddNewOrder라는 두 개의 URL이 생성된 것을 볼 수 있습니다. 각 URL에는 해당 뷰와 컨트롤러가 있습니다.

다음으로 간단한 예를 살펴보겠습니다.

Instance

<html>
    <head>
    	<meta charset="utf-8">
        <title>AngularJS 路由实例 - 菜鸟教程</title>
    </head>
    <body ng-app='routingDemoApp'>
     
        <h2>AngularJS 路由应用</h2>
        <ul>
            <li><a href="#/">首页</a></li>
            <li><a href="#/computers">电脑</a></li>
            <li><a href="#/printers">打印机</a></li>
            <li><a href="#/blabla">其他</a></li>
        </ul>
         
        <div ng-view></div>
        <script src="//cdn.bootcss.com/angular.js/1.4.6/angular-animate.min.js"></script>
        <script src="//cdn.bootcss.com/angular.js/1.3.13/angular-route.js"></script>
        <script>
            angular.module('routingDemoApp',['ngRoute'])
            .config(['$routeProvider', function($routeProvider){
                $routeProvider
                .when('/',{template:'这是首页页面'})
                .when('/computers',{template:'这是电脑分类页面'})
                .when('/printers',{template:'这是打印机页面'})
                .otherwise({redirectTo:'/'});
            }]);
        </script>
     
     
    </body>
</html>

인스턴스 실행 »

온라인 인스턴스를 보려면 "인스턴스 실행" 버튼을 클릭하세요

분석 예시:

  • 1 라우팅을 구현한 js 파일을 로드합니다: angle-route.js.

  • 2. ngRoute 모듈을 기본 애플리케이션 모듈의 종속 모듈로 포함합니다.

    angular.module('routingDemoApp',['ngRoute'])
  • 3.ngView 명령을 사용하세요.

    <div ng-view></div>

    이 div 내의 HTML 콘텐츠는 라우팅 변경에 따라 변경됩니다.

  • $routeProvider 구성, AngularJS $routeProvider는 라우팅 규칙을 정의하는 데 사용됩니다.

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

    AngularJS 모듈의 구성 기능은 라우팅 규칙을 구성하는 데 사용됩니다. configAPI를 사용하여 $routeProvider가 구성 기능에 삽입되도록 요청하고 $routeProvider.whenAPI를 사용하여 라우팅 규칙을 정의합니다.

    $routeProvider는 모든 경로를 순서대로 정의하는 when(path,object) 및 else(object) 함수를 제공합니다. 이 함수에는 두 개의 매개변수가 포함되어 있습니다.

    • 첫 번째 매개변수는 URL 또는 URL 일반 규칙입니다.

    • 두 번째 매개변수는 라우팅 구성 개체입니다.


    Route 설정 객체

    AngularJS 라우팅은 다양한 템플릿을 통해서도 구현할 수 있습니다.

  • $routeProvider.when 함수의 첫 번째 매개변수는 URL 또는 URL 일반 규칙이고 두 번째 매개변수는 라우팅 구성 개체입니다.


  • 라우팅 구성 개체 구문 규칙은 다음과 같습니다.

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

    매개변수 설명:

    • template:

      ng-view에 간단한 HTML 콘텐츠만 삽입해야 하는 경우 이 매개변수를 사용하세요.

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

    • templateUrl:

      ng-view에 HTML 템플릿 파일만 삽입해야 하는 경우 다음 매개변수를 사용하세요.

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

      위 코드는 views/computers.html을 가져옵니다. 서버의 파일 콘텐츠가 ng-view에 삽입됩니다.


    • controller:

      함수, 문자열 또는 배열 유형, 현재 템플릿에서 실행되는 컨트롤러 함수, 새 범위 생성.


    • controllerAs:

      문자열 유형, 컨트롤러의 별칭을 지정합니다.


    • redirectTo:

      리디렉션된 주소입니다.


    • resolve:

      현재 컨트롤러가 의존하는 다른 모듈을 지정합니다.


    • Instance

      <html>
      <head>
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
      <script src="http://apps.bdimg.com/libs/angular-route/1.3.13/angular-route.js"></script>
      
      <script type="text/javascript">
      angular.module('ngRouteExample', ['ngRoute'])
      .controller('HomeController', function ($scope) { $scope.$route = $route;})
      .controller('AboutController', function ($scope) { $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> Home </h1>
        </script>
      
        <script type="text/ng-template" id="embedded.about.html">
            <h1> About </h1>
        </script>
      
        <div> 
          <div id="navigation">  
            <a href="#/home">Home</a>
            <a href="#/about">About</a>
          </div>
            
          <div ng-view="">
          </div>
        </div>
      </body>
      </html>

      인스턴스 실행 »

      온라인 인스턴스를 보려면 "인스턴스 실행" 버튼을 클릭하세요