angular -- $route API翻譯
$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地址: