angular的路由實現,ngRoute
阿新 • • 發佈:2019-02-13
你學習一個新的框架都會有一個理由,我學習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