簡單講解AngularJS的Routing路由的定義與使用
在單頁面應用中,視圖之間的跳轉就顯尤為重要的,隨著應用越來越復雜,我們需要用一種方法來精確控制什么時候該呈現(xiàn)怎樣的頁面給用戶。
咱們可以通過在主頁面中引入不同的模板來支持不同頁面的切換,但是這么做的缺點就是,越來越多的內嵌代碼導致最后難以管理。
通過ng-include指令我們可以把很多的模板整合在視圖中,但是我們有更好的方法來處理這種情況,我們可以把視圖打散成layout和模板視圖,然后根據(jù)用戶訪問的特定的URL來顯示需要的視圖
我們可以將這些“碎片”在一個布局模板中拼接起來
AngularJS通過在$routeProvider($route服務的提供者)上聲明routes來實現(xiàn)上面的構想
使用$routeProvider,我們可以更好的利用瀏覽歷史的API并且可以讓用戶可以把當前路徑存成書簽以方便以后的使用
在我們的應用中設定路由,我們需要做兩件事情:第一,我們需要指出我們存放將要存放新頁面內容的布局模板在哪里。比如,如果我們想在所有頁面都配上header和footer,我們可以這樣設計布局模板:
<header> <h1>Header</h1> </header> <div class="content"> <div ng-view></div> </div> <footer> <h5>Footer</h5> </footer>
ng-view指令將高速$routeProvider在哪里渲染模板
第二,我們需要配置我們的路由信息,我們將在應用中配置$routeProvider
$routeProvider提供了兩種方法處理路由:when和otherwise。 方法when接收兩個參數(shù),第一個設置$location.path(). (直接用“//”也沒有問題)
定義
定義路由非常容易,在我們的應用mian模塊里面注入ngRoute依賴就可以了
angular.module('myApp', ['ngRoute'])
.config(function($routeProvider) {});
現(xiàn)在,我們就可以給應用定義路由了。在路由模塊里面的.config()方法里面注入了$routeProvider,上面的代碼給我們演示了兩個用于定義路由的方法。
when()
when()方法有兩個參數(shù),我們希望匹配的瀏覽器url和路由操作對象。一般main route經常使用“/”來表示,也可以定義URL參數(shù),在controller里面就使用$routeParams獲取url參數(shù)。
templateUrl: 表示路由跳轉的view模板
controller: 控制器
angular.module('myApp', ['ngRoute'])
.config(function($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'views/main.html',
controller: 'MainCtrl'
})
.when('/day/:id', {
templateUrl: 'views/day.html',
controller: 'DayCtrl'
})
otherwise()
otherwise()定義了當應用找不到指定路由的時候跳轉的路由
angular.module('myApp', ['ngRoute'])
.config(function($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'views/main.html',
controller: 'MainCtrl'
})
.when('/day/:id', {
templateUrl: 'views/day.html',
controller: 'DayCtrl'
})
.otherwise({
redirectTo: '/'
});
})
使用
定義好了路由需要怎么使用呢?我們要告訴angular頁面的哪一個部分是我們希望轉換的,這需要使用到ng-view指令
<div class="header">My page</div> <div ng-view></div> <span class="footer">A footer</span>
這樣就只有<div ng-view></div>會被更新, header/footer都始終保持不變
相關文章
Angular.JS內置服務$http對數(shù)據(jù)庫的增刪改使用教程
我們可以使用內置的$http服務直接同外部進行通信。$http服務只是簡單的封裝了瀏覽器原生的XMLHttpRequest對象,下面這篇文章主要給大家介紹了關于Angular.JS內置服務$http對數(shù)據(jù)庫的增刪改等操作的相關資料,需要的朋友可以參考下。2017-05-05
Angular依賴注入optional?constructor?parameters概念
這篇文章主要為大家介紹了Angular?依賴注入領域里?optional?constructor?parameters?的概念及使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-11-11
詳解webpack+angular2開發(fā)環(huán)境搭建
這篇文章主要介紹了詳解webpack+angular2開發(fā)環(huán)境搭建,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06
angular route中使用resolve在uglify壓縮后問題解決
這篇文章主要介紹了angular route中使用resolve在uglify壓縮后問題解決的相關資料,需要的朋友可以參考下2016-09-09
分享Angular http interceptors 攔截器使用(推薦)
AngularJS 是一個 JavaScript 框架。它可通過 <script> 標簽添加到 HTML 頁面。這篇文章主要介紹了分享Angular http interceptors 攔截器使用(推薦),需要的朋友可以參考下2019-11-11
Angular4集成ng2-file-upload的上傳組件
本篇文章主要介紹了Angular4集成ng2-file-upload的上傳組件,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-03-03
簡介AngularJS中使用factory和service的方法
這篇文章主要簡單介紹了AngularJS中使用factory和service的方法,主要針對自定義工廠和服務的創(chuàng)建來講,需要的朋友可以參考下2015-06-06

