angular -- $route API翻譯

詩&遠方發表於2014-07-17

$route 

-$routeProvider服務

-依賴ngRoute模組

$route能夠在路徑發生改變的時候,渲染不同的檢視,呼叫不同的控制器.它監測了$location.url(),然後根據路徑來匹配相應的路由,路由的定義方法詳見$routeProvider的API.

$route通常和$routeProvider服務和ngView指令一起使用

 

依賴:

$location
$routeParams

 

方法:

reload()

在路由沒有改變的時候,再次載入當前路徑的路由,重新渲染ng-view,例項化一個控制器

 

事件:

$routeChangeStart

在路由變化之前被觸發,在這個時間點上,路由服務會resolve所有的路由變化所需要的依賴(詳見$routeProvider),以及獲取需要被渲染的檢視模板,已經解析所有載入新路由所需要的依賴.當所有的依賴都被解析以後,$routeChangeSuccess事件就會被觸發

型別: broadcast

目標元素: root scope(即在根作用域內繫結)

 

$routeChangeSuccess

在所有路由依賴被解析完成後觸發,ng-view會根據指令例項化控制器,渲染檢視

型別: broadcast

目標元素: root scope

 

$routeChangeError

當解析路由依賴時,promise物件沒有正常解析,而是reject出錯的時候被觸發. (詳見$q)

型別: broadcast

目標元素: root scope

 

$routeUpdate

reloadOnSearch屬性設定為false,再次使用相同的控制器例項

這個屬性在$route.current.$route物件裡

型別: broadcast

目標元素: root scope

 

屬性:

(以下這段不是翻譯,勝似翻譯)

$route物件共有三個屬性:

1.current

   current物件又有以下幾個屬性:

   ①$route:

   

      $route物件包含controller屬性: 當前檢視的控制器

      $route物件包含reloadOnSearch屬性: 見上

      $route物件包含resolve屬性: 需要被解析的依賴(還沒有解析)

      $route物件包含templateUrl屬性: 檢視模板路徑

    ②locals:

   

       locals物件包含$scope屬性: 當前作用域

       locals物件包含$template屬性: 檢視模板的內容

       locals物件還包含已經解析完的依賴(在這裡就是recipe屬性) 

    ③params:

     

      當前路徑的引數物件

    ④pathParams:

       

      也是當前路徑的引數物件(區別不詳)

      

2.reload方法   

3.routes物件:

   

    routes物件包含了當前單頁應用的所有路由規則,每個路由規則所對應的檢視模板,控制器,依賴,以及reloadOnSearch屬性

 

這裡是一個$route的demo,這個demo故意延遲路由的resolve的解析時間,

通過這個demo可以看到,分析下面這幾項的變化情況:

$location.path():

路由一變化就隨之變化,獲取新的url

$route.current.templateUrl:

路由一變化就隨之變化,獲取新路由的模板url

$route.current.params:

路由一變化就隨之變化,獲取新路由的模板url的引數

$route.current.scope:

路由一變化,它會成為空,等到路由變化完成,再把新路由的作用域賦給它

$routeParam:

路由一變化,它不會變為空,會保持上一次路由變化,等到路由變化完成,再把新路由url引數賦給它

檢視:

路由變化完成後進行渲染

demo地址:

https://github.com/OOP-Code-Bunny/angular/tree/master/%24route

 

相關文章