AngularJS 路由以及模块配置

  1. <!DOCTYPE html>  
  2. <html lang="en" ng-app="App">  
  3. <head>  
  4.     <meta charset="UTF-8">  
  5.     <title>AngularJS 路由-参数,模块配置,布局模板</title>  
  6.     <style>  
  7.         body {  
  8.             padding: 0;  
  9.             margin: 0;  
  10.             background-color: #F7F7F7;  
  11.             font-family: Arial;  
  12.         }  
  13.   
  14.         .wrapper {  
  15.             max-width: 980px;  
  16.             margin: 50px auto;  
  17.         }  
  18.   
  19.         ul {  
  20.             padding: 0;  
  21.             margin: 0;  
  22.             overflow: hidden;  
  23.             list-style: none;  
  24.             background-color: #000;  
  25.             border-radius: 4px;  
  26.         }  
  27.   
  28.         li {  
  29.             float: left;  
  30.             width: 120px;  
  31.             height: 40px;  
  32.             text-align: center;  
  33.             line-height: 40px;  
  34.             font-size: 18px;  
  35.         }  
  36.   
  37.         li.active {  
  38.             background-color: #333;  
  39.         }  
  40.   
  41.         li a {  
  42.             display: block;  
  43.             color: #FFF;  
  44.             text-decoration: none;  
  45.         }  
  46.   
  47.         .content {  
  48.             margin-top: 30px;  
  49.             font-size: 24px;  
  50.             padding: 0 20px;  
  51.         }  
  52.     </style>  
  53. </head>  
  54. <!--  
  55.     路由:  
  56.         一个应用是由若个视图组合而成的,根据不同的业务逻辑展示给用户不同的视图 ,路由则是实现这一功能的关键.  
  57.           
  58.         在后端开发中通过URL地址可以实现页面(视图)的切换,但是AngularJS是一个纯前端MVC框架,  
  59.         在开发单页面应用时,所有功能都在同一页面完成,所以无需切换URL地址(即不允许产生跳转),  
  60.         但Web应用中又经常通过链接(a标签)来更新页面(视图),当点击链接时还要阻止其向服务器发起请求,  
  61.         通过锚点(页内跳转)可以实现这一点。  
  62.       
  63.     路由参数:  
  64.         1、提供两个方法匹配路由,分别是when和otherwise,when方法需要两个参数,  
  65.             otherwise方法做为when方法的补充只需要一个参数,其中when方法可以被多次调用。  
  66.         2、第1个参数是一个字符串,代表当前URL中的hash值。  
  67.         3、第2个参数是一个对象,配置当前路由的参数,如视图、控制器等。  
  68.             a、template 字符串形式的视图模板  
  69.             b、templateUrl 引入外部视图模板  
  70.             c、controller 视图模板所属的控制器  
  71.             d、redirectTo跳转到其它路由  
  72.         4、获取参数,在控制中注入$routeParams可以获取传递的参数  
  73.           
  74.           
  75.     SPA:(Single Page Application)指的是通单一页面展示所有功能,  
  76.             通过Ajax动态获取数据然后进行实时渲染, 结合CSS3动画模仿原生App交互,  
  77.             然后再进行打包(使用工具把Web应用包一个壳, 这个壳本质上是浏览器)变成一个“原生”应用。  
  78.         在PC端也有广泛的应用,通常情况下使用Ajax异步请求数据,然后实现内容局部刷新,  
  79.             局部刷新的本质是动态生成DOM,新生成的DOM元素并没有真实存在于文档中,  
  80.             所以当再次刷新页面时新添加的DOM元素会“丢失”,通过单页面应可以很好的解决这个问题  
  81.               
  82.     SPA(单页面应用条件):  
  83.         1、只有一页面  
  84.         2、链接使用锚点  
  85.           
  86.     hashchange:   
  87.         AngularJs实现单一页面可以通过hashchange事件监听到锚点的变化,  
  88.             进而可以实现为不同的锚点准备不同的视图,单页面应用就是基于这一原理实现的。  
  89.         AngularJS对这一实现原理进行了封装,将锚点的变化封装成路由(Route),这是与后端路由的根本区别。  
  90.           
  91. -->  
  92. <body>  
  93.     <div class="wrapper">  
  94.         <!-- 导航菜单 -->  
  95.         <ul>  
  96.             <li class="active">  
  97.                 <a href="#/index">Index</a>  
  98.             </li>  
  99.             <li>  
  100.                 <a href="#/introduce">Introduce</a>  
  101.             </li>  
  102.             <li>  
  103.                 <a href="#/contact">Contact Us</a>  
  104.             </li>  
  105.             <li>  
  106.                 <a href="#/list">List</a>  
  107.             </li>  
  108.         </ul>  
  109.         <!-- 内容 -->  
  110.         <div class="content">  
  111.             <!--4 布局模板 占位符 -->  
  112.             <div ng-view></div>  
  113.         </div>  
  114.   
  115.     </div>  
  116.     <!-- AngularJS核心框架 -->  
  117.     <script src="./libs/angular.min.js"></script>  
  118.     <!-- 1 路由模块理解成插件 -->  
  119.     <script src="./libs/angular-route.js"></script>  
  120.     <script>  
  121.       
  122.         //2 实例化模块(App)时,当成依赖传进去(模块名称叫ngRoute)  
  123.         var App = angular.module('App', ['ngRoute']);  
  124.   
  125.         //3 配置路由模块,使其正常工作  
  126.         App.config(['$routeProvider', function ($routeProvider) {  
  127.   
  128.             $routeProvider.when('/index', {  
  129.                 // template: '<h1>index Pages!</h1>',  
  130.                 templateUrl: './abc.html'  
  131.             })  
  132.             .when('/introduce', {  
  133.                 template: '<h1>introduce Pages!</h1>'  
  134.             })  
  135.             .when('/contact', {  
  136.                 // template: '<h1>contact US Pages!</h1>',  
  137.                 templateUrl: './contact.html',  
  138.                 controller: 'ContactController' // 定义控制器  
  139.             })  
  140.             .when('/list', {  
  141.                 templateUrl: './list.html', // 视图模板  
  142.                 controller: 'ListController' // 定义控制器  
  143.             })  
  144.             .otherwise({  
  145.                 redirectTo: '/index'  
  146.             });  
  147.   
  148.         }]);  
  149.   
  150.         // 列表控制器  
  151.         App.controller('ListController', ['$scope', '$http', function ($scope, $http) {  
  152.             // 模型数据  
  153.             // $scope.items = ['html', 'css', 'js'];  
  154.   
  155.             $http({  
  156.                 url: 'xxx.php',  
  157.             }).success(function (info) {  
  158.                 $scope.items = info; //php 返回值['html', 'css', 'js'];  
  159.             });  
  160.   
  161.         }]);  
  162.   
  163.         App.controller('ContactController', ['$scope', '$http', function ($scope, $http) {  
  164.   
  165.             $http({  
  166.                 url: 'contact.php'  
  167.             }).success(function (info) {  
  168.                 $scope.content = info;  
  169.             });  
  170.   
  171.         }]);  
  172.   
  173.     </script>  
  174.   
  175. </body>  
  176. </html>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值