AngularJS 學習筆記——路由配置(ngRoute)

<!DOCTYPE html>  
<html lang="en" ng-app="App">  
<head>  
    <meta charset="UTF-8">  
    <title>AngularJS 路由-參數,模塊配置,佈局模板</title>  
    <style>  
        body {  
            padding: 0;  
            margin: 0;  
            background-color: #F7F7F7;  
            font-family: Arial;  
        }  
  
        .wrapper {  
            max-width: 980px;  
            margin: 50px auto;  
        }  
  
        ul {  
            padding: 0;  
            margin: 0;  
            overflow: hidden;  
            list-style: none;  
            background-color: #000;  
            border-radius: 4px;  
        }  
  
        li {  
            float: left;  
            width: 120px;  
            height: 40px;  
            text-align: center;  
            line-height: 40px;  
            font-size: 18px;  
        }  
  
        li.active {  
            background-color: #333;  
        }  
  
        li a {  
            display: block;  
            color: #FFF;  
            text-decoration: none;  
        }  
  
        .content {  
            margin-top: 30px;  
            font-size: 24px;  
            padding: 0 20px;  
        }  
    </style>  
</head>  
<!--  
    路由:  
        一個應用是由若個視圖組合而成的,根據不一樣的業務邏輯展現給用戶不一樣的視圖 ,路由則是實現這一功能的關鍵.  
          
        在後端開發中經過URL地址能夠實現頁面(視圖)的切換,可是AngularJS是一個純前端MVC框架,  
        在開發單頁面應用時,全部功能都在同一頁面完成,因此無需切換URL地址(即不容許產生跳轉),  
        但Web應用中又常常經過連接(a標籤)來更新頁面(視圖),當點擊連接時還要阻止其向服務器發起請求,  
        經過錨點(頁內跳轉)能夠實現這一點。  
      
    路由參數:  
        一、提供兩個方法匹配路由,分別是when和otherwise,when方法須要兩個參數,  
            otherwise方法作爲when方法的補充只須要一個參數,其中when方法能夠被屢次調用。  
        二、第1個參數是一個字符串,表明當前URL中的hash值。  
        三、第2個參數是一個對象,配置當前路由的參數,如視圖、控制器等。  
            a、template 字符串形式的視圖模板  
            b、templateUrl 引入外部視圖模板  
            c、controller 視圖模板所屬的控制器  
            d、redirectTo跳轉到其它路由  
        四、獲取參數,在控制中注入$routeParams能夠獲取傳遞的參數  
          
          
    SPA:(Single Page Application)指的是通單一頁面展現全部功能,  
            經過Ajax動態獲取數據而後進行實時渲染, 結合CSS3動畫模仿原生App交互,  
            而後再進行打包(使用工具把Web應用包一個殼, 這個殼本質上是瀏覽器)變成一個「原生」應用。  
        在PC端也有普遍的應用,一般狀況下使用Ajax異步請求數據,而後實現內容局部刷新,  
            局部刷新的本質是動態生成DOM,新生成的DOM元素並無真實存在於文檔中,  
            因此當再次刷新頁面時新添加的DOM元素會「丟失」,經過單頁面應能夠很好的解決這個問題  
              
    SPA(單頁面應用條件):  
        一、只有一頁面  
        二、連接使用錨點  
          
    hashchange:   
        AngularJs實現單一頁面能夠經過hashchange事件監聽到錨點的變化,  
            進而能夠實現爲不一樣的錨點準備不一樣的視圖,單頁面應用就是基於這一原理實現的。  
        AngularJS對這一實現原理進行了封裝,將錨點的變化封裝成路由(Route),這是與後端路由的根本區別。  
          
-->  
<body>  
    <div class="wrapper">  
        <!-- 導航菜單 -->  
        <ul>  
            <li class="active">  
                <a href="#/index">Index</a>  
            </li>  
            <li>  
                <a href="#/introduce">Introduce</a>  
            </li>  
            <li>  
                <a href="#/contact">Contact Us</a>  
            </li>  
            <li>  
                <a href="#/list">List</a>  
            </li>  
        </ul>  
        <!-- 內容 -->  
        <div class="content">  
            <!--4 佈局模板 佔位符 -->  
            <div ng-view></div>  
        </div>  
  
    </div>  
    <!-- AngularJS核心框架 -->  
    <script src="./libs/angular.min.js"></script>  
    <!-- 1 路由模塊理解成插件 -->  
    <script src="./libs/angular-route.js"></script>  
    <script>  
      
        //2 實例化模塊(App)時,當成依賴傳進去(模塊名稱叫ngRoute)  
        var App = angular.module('App', ['ngRoute']);  
  
        //3 配置路由模塊,使其正常工做  
        App.config(['$routeProvider', function ($routeProvider) {  
  
            $routeProvider.when('/index', {  
                // template: '<h1>index Pages!</h1>',  
                templateUrl: './abc.html'  
            })  
            .when('/introduce', {  
                template: '<h1>introduce Pages!</h1>'  
            })  
            .when('/contact', {  
                // template: '<h1>contact US Pages!</h1>',  
                templateUrl: './contact.html',  
                controller: 'ContactController' // 定義控制器  
            })  
            .when('/list', {  
                templateUrl: './list.html', // 視圖模板  
                controller: 'ListController' // 定義控制器  
            })  
            .otherwise({  
                redirectTo: '/index'  
            });  
  
        }]);  
  
        // 列表控制器  
        App.controller('ListController', ['$scope', '$http', function ($scope, $http) {  
            // 模型數據  
            // $scope.items = ['html', 'css', 'js'];  
  
            $http({  
                url: 'xxx.php',  
            }).success(function (info) {  
                $scope.items = info; //php 返回值['html', 'css', 'js'];  
            });  
  
        }]);  
  
        App.controller('ContactController', ['$scope', '$http', function ($scope, $http) {  
  
            $http({  
                url: 'contact.php'  
            }).success(function (info) {  
                $scope.content = info;  
            });  
  
        }]);  
  
    </script>  
  
</body>  
</html>

ngRoute 不能夠嵌套路由。php

須要嵌套路由就得用ui-router。css

相關文章
相關標籤/搜索