AngularJS 避繁就簡的路由
AngularJS 路由允許我們通過不同的 URL 訪問不同的內(nèi)容。
通過 AngularJS 可以實現(xiàn)多視圖的單頁Web應用(single page web application,SPA)。
通常我們的URL形式為 http://runoob.com/first/page,但在單頁Web應用中 AngularJS 通過 # + 標記 實現(xiàn),例如:
http://runoob.com/#/first
http://runoob.com/#/second
http://runoob.com/#/third
先看看$routeProvider 的配置對象屬性方法:
路由設置對象解析:
$routeProvider.when(url(路由名稱), { template: string(模板提示字符串), templateUrl: string(模板路徑URL), controller: string, function 或 array(在當前模板創(chuàng)建控制器,生成新的 $scope 作用域), controllerAs: string(控制器別名), redirectTo: string, function(重定向地址), resolve: object<key, function>(當前路由所依賴的模塊) });
實現(xiàn)路由的大致步驟:
第一步:導入ngRoute模塊
<script type="text/javascript" src="js/angular-route.min.js"></script>
第二步:在應用模塊中使用ngRoute
angular.module("routeApp", ["ngRoute"])
第三步:使用 ng-view 指令
<div ng-view class="well" ng-controller='defaultCtrl'></div>
第四步:配置 $routeProvider 路由規(guī)則
... .config(['$routeProvider', function ($routeProvider){ $routeProvider .when('/home', { templateUrl : 'home.tpl.html', controller : 'HomeCtrl', }) .when('/computer', { templateUrl : 'computer.html', }) .when('/phone', { templateUrl : 'phone.html', }) .when('/other', { templateUrl : 'other.tpl.html', controller : 'OtherCtrl', }) }]) ...
第五步:通過超鏈接使用路由
<ul class="nav nav-tabs"> <li><a href="#/home">首頁</a></li> <li><a href="#/computer">電腦</a></li> <li><a href="#/phone">手機</a></li> <li><a href="#/other">其他</a></li> </ul>
完整案例:
1 route.html頁面
<html> <head> <meta charset="utf-8"> <title>AngularJS 路由實例</title> <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css"> </head> <body ng-app='routeApp'> <ul class="nav nav-tabs"> <li><a href="#/home">首頁</a></li> <li><a href="#/computer">電腦</a></li> <li><a href="#/phone">手機</a></li> <li><a href="#/other">其他</a></li> </ul> <div ng-view class="well" ng-controller='defaultCtrl'></div> <script type="text/javascript" src="js/jquery.min.js"></script> <script type="text/javascript" src="js/bootstrap.min.js"></script> <script type="text/javascript" src="js/angular.min.js"></script> <script type="text/javascript" src="js/angular-route.min.js"></script> <script type="text/ng-template" id="home.tpl.html"> <h1>{{data}}</h1> </script> <script type="text/ng-template" id="other.tpl.html"> <h1>{{data}}</h1> </script> <script type="text/javascript"> angular.module("routeApp", ["ngRoute"]) .config(['$routeProvider', function ($routeProvider){ $routeProvider .when('/home', { templateUrl : 'home.tpl.html', controller : 'HomeCtrl', }) .when('/computer', { templateUrl : 'computer.html', }) .when('/phone', { templateUrl : 'phone.html', }) .when('/other', { templateUrl : 'other.tpl.html', controller : 'OtherCtrl', }) }]) .controller('defaultCtrl', function ($scope) { $scope.computers = [ { id: 0, name: "宏基", category: "Test", price: 1.25 }, { id: 1, name: "聯(lián)想", category: "Test", price: 2.45 }, { id: 2, name: "蘋果", category: "Test", price: 4.25 } ]; $scope.phones = [ { id: 0, name: "三星", category: "Test", price: 1.25 }, { id: 1, name: "榮耀", category: "Test", price: 2.45 }, { id: 2, name: "魅族", category: "Test", price: 4.25 } ]; }) .controller("HomeCtrl", function ($scope, $route) { $scope.$route = $route; $scope.data = "Home Home"; }) .controller("OtherCtrl", function ($scope, $route) { $scope.$route = $route; $scope.data = "Other Other"; }) </script> </body> </html>
2.computer.html 頁面
<div class="panel-body"> <table class="table table-striped table-hover"> <thead> <tr> <th>名稱</th> <th>類別</th> <th class="text-right">價格</th> <th>{{data}}</th> </tr> </thead> <tbody> <tr ng-repeat="item in computers"> <td>{{item.name}}</td> <td>{{item.category}}</td> <td class="text-right">{{item.price | currency}}</td> <td class="text-center"> <button class="btn btn-xs btn-primary" ng-click="deleteProduct(item)">刪除</button> <a href="/edit/{{item.id}}" class="btn btn-xs btn-primary" ng-click="editOrCreateProduct(item)">編輯</a> <button class="btn btn-xs btn-primary" ng-click="incrementPrice(item)">+</button> </td> </tr> </tbody> </table> <div> <button class="btn btn-xs btn-primary" ng-click="editOrCreateProduct()">添加</button> <a href="create" class="btn btn-xs btn-primary" ng-click="editOrCreateProduct()">Add</a> </div> </div>
3.phone.html 頁面
<div class="panel-body"> <table class="table table-striped table-hover"> <thead> <tr> <th>名稱</th> <th>類別</th> <th class="text-right">價格</th> <th>{{data}}</th> </tr> </thead> <tbody> <tr ng-repeat="item in phones"> <td>{{item.name}}</td> <td>{{item.category}}</td> <td class="text-right">{{item.price | currency}}</td> <td class="text-center"> <button class="btn btn-xs btn-primary" ng-click="deleteProduct(item)">刪除</button> <a href="/edit/{{item.id}}" class="btn btn-xs btn-primary" ng-click="editOrCreateProduct(item)">編輯</a> <button class="btn btn-xs btn-primary" ng-click="incrementPrice(item)">+</button> </td> </tr> </tbody> </table> <div> <button class="btn btn-xs btn-primary" ng-click="editOrCreateProduct()">添加</button> <a href="create" class="btn btn-xs btn-primary" ng-click="editOrCreateProduct()">Add</a> </div> </div>
單擊“首頁”
單擊“電腦”
單擊“手機”
單擊“其他”
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- 微信+angularJS的SPA應用中用router進行頁面跳轉(zhuǎn),jssdk校驗失敗問題解決
- Angularjs制作簡單的路由功能demo
- AngularJS 路由詳解和簡單實例
- 使用AngularJS對路由進行安全性處理的方法
- AngularJS 路由和模板實例及路由地址簡化方法(必看)
- AngularJS監(jiān)聽路由的變化示例代碼
- AngularJS通過ng-route實現(xiàn)基本的路由功能實例詳解
- 簡單講解AngularJS的Routing路由的定義與使用
- AngularJs ng-route路由詳解及實例代碼
- AngularJS路由實現(xiàn)頁面跳轉(zhuǎn)實例
相關(guān)文章
angular2 ng2-file-upload上傳示例代碼
這篇文章主要介紹了angular2 ng2-file-upload上傳示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08angular中實現(xiàn)控制器之間傳遞參數(shù)的方式
本篇文章主要介紹了angular中實現(xiàn)控制器之間傳遞參數(shù)的方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-04-04Angular實現(xiàn)點擊按鈕控制隱藏和顯示功能示例
這篇文章主要介紹了Angular實現(xiàn)點擊按鈕控制隱藏和顯示功能,結(jié)合實例形式分析了AngularJS簡單控制頁面元素顯示與隱藏的相關(guān)操作技巧,需要的朋友可以參考下2017-12-12AngularJS 將再發(fā)布一個重要版本 然后進入長期支持階段
目前團隊正在開發(fā) AngularJS 1.7.0,而 1.7 的開發(fā)周期將一直持續(xù)到 2018 年 6 月 30 日2018-01-01