1. 程式人生 > >angular的路由實現,ngRoute

angular的路由實現,ngRoute

你學習一個新的框架都會有一個理由,我學習angular的理由就是因為angular的路由功能,只能說,開發angular的大神太溜了~~~

下面,開始介紹我對ngRoute的使用心得

ngRoute不屬於angular的核心庫,需要將ngRoute模組額外的引入

<script src="angular-route.js" ></script>
然後用ng-view指定範圍
<div ng-view></div>
路由將會更新此區域

然後在主模組中引入ngRoute模組

var myModule = angular.module("myModule",["ngRoute"]);
準備工作已經完成,使用config模組中的$routeProvider內建服務呼叫路由

例子:

myModule.config(function($routeProvider){
	$.when("/index",{
		templateUrl:"tpls/index.html",
		controller:"indexCtrl"
	}).when("/list",{
		templateUrl:"tpls/list.html",
		controller:"listCtrl"
	}).otherwise({
		redirectTo:"/index"
	});
});
$routeProvider


$routeProvider是一個用於配置路由的內建服務。由於它是一個服務,根據service的使用建議,我們主要將其當做為工具來使用,所以我們一般直接使用$routeProvider.XXX來呼叫它的成員方法來實現一定的功能,而不是例項化一個$routeProvider的例項。它主要有以下兩個成員函式:


otherwise(params):設定對映資訊到$route.current,一般用於指定沒有標明的路由如何處理。
when(path, route):向$route服務新增新的路由。path是指定的URL路徑,route標明路由的處理。
$routeProvider.when(path, route)中的路由處理引數物件,常用的有如下的屬性:


controller:用於指向用於路由處理的控制器。
template:用於指向用於路由的檢視模板。
redirectTo:重定向。(使用$location)
不常用屬性:


controllerAs:控制器別名,一旦設定,在檢視中的scope就得使用這個別名來呼叫控制器。
templateUrl

resolve

$route
$route用於將控制器與檢視相連。它觀察$location.url(),並且嘗試對映路徑到一個已經存在的路由定義中。它依賴$location、$routeParams。它主要有如下成員函式:


reload() 用於重新載入當前的路由,哪怕$location沒有改變。呼叫後,ngView將建立新的Scope等。
它主要有如下事件:


$routeChangeStart:路由改變之前觸發;
$routeChangeSuccess:路由改變之後觸發;
$routeChangeError:路由改變出錯觸發;
$routeParams


$routeParams允許你檢索當前路由的引數。主要使用$location的search()與path()方法。

本文參考至:https://my.oschina.net/u/1582119/blog/307083