<!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