angular中ngRoute和uiRoute的區別


概述

最近一直在學習angular路由這一部分,angular的路由有兩種,在angular最先出來的ngRoute的時候,后續又有了uiRoute,具體有什么區別呢?今天就順便總結了一下。

簡單應用

1. 先分別創建出每個路由簡單的應用,首先引包下載我就不說了,然后直接開始寫一個簡單ngRoute的路由和使用。

 
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <script src="angular.js"></script>
 7     <script src="angular-route.js"></script>  //注意引包順序 必須在angular.js后面
 8 </head>
 9 <body ng-app="s1.app">
10 <div>
11     <a href="#/list">list</a>
12     <a href="#/detail/0">張三</a>
13     <a href="#/detail/1">李四</a>
14     <a href="#/detail/2">王五</a>
15     <a href="#/detail/3">趙六</a>
16 </div>
17 <div ng-view></div>
18 <script>
19     var app = angular.module('s1.app', ['ngRoute']);
20     app.service('DataService', function () {  //創建DataService服務 21 this.getList = function () { 22 return [ 23 {name: '張三', tel: '13333333333'}, 24 {name: '李四', tel: '13433333333'}, 25 {name: '王五', tel: '13533333333'}, 26 {name: '趙六', tel: '18666666666'}, 27  ] 28  } 29  }); 30 app.controller('ListController', function ($scope) {  //創建ListController控制器 用來指定路由中的控制器 31 $scope.msg = 'list controller' 32  }); 33 app.controller('DetailController', function ($scope, $routeParams, DataService) {  //穿件Detail控制器 用法和上個一樣 34 var index = $routeParams.index; 35 $scope.data = DataService.getList()[index]; 36  }); 37 app.config(function ($routeProvider) { 38  $routeProvider 39 .when('/list', { 40 template: '<div>{{msg}}</div>', 41 controller: 'ListController' 42  }) 43 .when('/detail/:index', { 44 template: '<div>{{data}}</div>',  //這里可以用templateUrl用來指定模板,模板中不可以有路由模塊嵌套 45 controller: 'DetailController' 46  } 47  ) 48  }) 49 </script> 50 </body> 51 </html>

 2. 創建一個uiRoute 和使用

 1 <!DOCTYPE html>
 2 <html lang="en" ng-app="s9.app">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>簡單的例子:基礎路由</title>
 6     <script src="../jquery.js"></script>
 7     <script src="../angular.js"></script>
 8     <script src="../angular-ui-router.js"></script>
 9     <style>
10         .content{
11             margin: 10px;
12             border-top:1px solid silver;
13         }
14         .view{
15             border:1px solid orange;
16             min-height: 300px;
17             padding: 5px;
18         }
19     </style>
20 </head>
21 <body>
22 當前頁面狀態:{{getCurrentState()}}
23 <div class="nav">
24     <a ui-sref="index">index</a>
25     <a ui-sref="about">about</a>
26     <a ui-sref="detail({id:1,name:'張三'})">detail</a>  //這個是帶參數的路由
27 </div>
28 <div class="content">
29     <div>ui-view:</div>
30     <div class="view" ui-view></div>
31 </div>
32 <script>
33 
34 /**
35  * Created by GlassTea on 2016/9/24 0024.
36  */
37 angular.module('s9.app', ['ui.router'])
38     .config(function ($stateProvider, $urlRouterProvider) {
39         $stateProvider
40             .state('index', {                //路由匹配規則
41                 url: '/index',
42                 template: '<div>msg from index page: {{data.msg}}</div>',
43                 controller: function ($scope) {
44                     var data = $scope.data = {};
45                     data.msg = 'hello, this is index page.'
46                 }
47             })
48             .state('about', {
49                 url: '/about/',
50                 template: '<div>msg from about page: {{data.msg}}</div>',
51                 controller: function ($scope) {
52                     var data = $scope.data = {};
53                     data.msg = 'hello, this is about page.'
54                 }
55             })
56             .state('detail', {
57                 url: '/about/:id/:name',
58                 template: '<div>msg from detail page: {{data.msg}}</div>',
59                 controller: function ($scope, $stateParams) {
60                     var data = $scope.data = {};
61                     data.msg = $stateParams;
62                 }
63             })
64 65         $urlRouterProvider.otherwise('/index');   //沒有配置的狀態就可以跳到 ‘/index’狀態
66     })
67     .run(function ($rootScope, $state, $stateParams) {
68         window.getState = function () {
69             return $state;
70         };
71         window.getStateParams = function () {
72             return $stateParams;
73         };
74     });
75 </script>
76 </body>
77 </html>

3.ngRoute  和  ui-route 相比:

        $when       —>   $state                                  路由狀態配置的時候           

        $routeParams      —>  $stateParams              帶參數的時候的配置

        $routeProvider      —>  $stateProvider           依賴注入的模塊

    <div ng-view></div>      —>  <div ui-view></div>         頁面中綁定的指令

4. 路由詳解

  uiRoute中可以嵌套更深層次的路由,也就是路由中可以有路由(大致有兩種情況:1.橫向的 2.縱向的)。

   (1)嵌套路由

  •   (2)多視圖路由

  ngRoute中就不能嵌套更深的路由。

 

這就是我的一些心得,肯定有些不足,包括事件都沒有往上面寫,歡迎大家一起交流學習。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM