簡單講解AngularJS的Routing路由的定義與使用
來源:易賢網 閱讀:835 次 日期:2016-08-02 15:02:39
溫馨提示:易賢網小編為您整理了“簡單講解AngularJS的Routing路由的定義與使用”,方便廣大網友查閱!

在單頁面應用中,視圖之間的跳轉就顯尤為重要的,隨著應用越來越復雜,我們需要用一種方法來精確控制什么時候該呈現怎樣的頁面給用戶。

咱們可以通過在主頁面中引入不同的模板來支持不同頁面的切換,但是這么做的缺點就是,越來越多的內嵌代碼導致最后難以管理。

通過ng-include指令我們可以把很多的模板整合在視圖中,但是我們有更好的方法來處理這種情況,我們可以把視圖打散成layout和模板視圖,然后根據用戶訪問的特定的URL來顯示需要的視圖

我們可以將這些“碎片”在一個布局模板中拼接起來

AngularJS通過在$routeProvider($route服務的提供者)上聲明routes來實現上面的構想

使用$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接收兩個參數,第一個設置$location.path(). (直接用“//”也沒有問題)

定義

定義路由非常容易,在我們的應用mian模塊里面注入ngRoute依賴就可以了

angular.module('myApp', ['ngRoute'])

 .config(function($routeProvider) {});

現在,我們就可以給應用定義路由了。在路由模塊里面的.config()方法里面注入了$routeProvider,上面的代碼給我們演示了兩個用于定義路由的方法。

when()

when()方法有兩個參數,我們希望匹配的瀏覽器url和路由操作對象。一般main route經常使用“/”來表示,也可以定義URL參數,在controller里面就使用$routeParams獲取url參數。

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都始終保持不變

更多信息請查看網絡編程
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
未满十八18勿进黄网站免费看