在開講之前,首先談談APP應用。平時我們用的app總是多頁面,如果用原生安卓或者蘋果,那當然很流暢啦。但是當我們用一般的html頁面做移動端,簡單時候我們可以用<a href=""></a>這樣的標簽去鏈接頁面時,速度還是可以的。
但是當我們的應用越來越多時,切換起來沒那么流暢。又是礙於網速,頁面加載進來有點慢。但是在angular里面,我們可以用路由進行切換。因為在angular里面,我們用戶一般在加載這樣的應用時,會整個的緩存在手機上。我們用路由進行切換時,不用再發起HTTP請求了。體驗比原來好。
一般我們的路由結構是這樣的。
1 <script> 2 angular.module('app',[]) 3 .config('$routeProvider',function ($routeProvider) { 4 $routeProvider 5 .when('/',{ 6 templateUrl:'view/home.html', 7 controller:'homeCtrl' 8 } 9 ) 10 .when('/',{ 11 templateUrl:'view/home.html', 12 controller:'homeCtrl' 13 } 14 ) 15 .when('/',{ 16 templateUrl:'view/home.html', 17 controller:'homeCtrl' 18 } 19 ) 20 .ontherwise({ 21 redirective:'/' 22 }) 23 }) 24 </script>
上邊代碼中,
config函數是一個配置函數。在使用
$routeProvider這樣的一個服務。
when:代表當你訪問這個“/”根目錄的時候 去訪問 templateUrl中的那個模板。 controller可想已知,就是我們配套的controller,就是應用於根目錄的這個 模板時的controller。
ontherwise 就是當你路徑訪問錯誤時,找不到。最后跳到這個默認的 頁面。
一般在我們的index.html會有這么的一段代碼
<header> <h1>Header</h1> </header> <div class="content"> <div ng-view></div> </div> <footer> <h5>Footer</h5> </footer>
<div ng-view></div> 這里面呢。就是我們注入的某個模板(template) 例如:<div ng-view=“tpl/abc.html”></div> 就相當於注入叫做abc.html的模板。ng-view這個指令優先級是1000的終極指令。就是說權限很高。
在注入這個abc.html的模板的時候。我們一般都用了路由設置,路由相當於一個遙控器。這個ng-view就是一部電視機。如果某個模板同當前的路由相關聯:
1 創建一個新的作用域;(用路由(遙控器)打開某個電視台)
2 移除上一個視圖,同時上一個作用域也會被清除;(換台,什么都沒了)
3 將新的作用域同當前模板關聯在一起;(電視機播放新的電視台)
4 如果路由中有相關的定義,那么就把對應的控制器同當前作用域關聯起來;
5 觸發$viewContentLoaded事件;
6 如果提供了onload屬性,調用該屬性所指定的函數。
$location 服務
AngularJS提供了一個服務用以解析地址欄中的URL,並讓你可以訪問應用當前路徑所對應
的路由。它同樣提供了修改路徑和處理各種形式導航的能力。
我們一般比較常用的:
1. path()
path() 用來獲取頁面當前的路徑:
$location.path(); // 返回當前路徑
修改當前路徑並跳轉到應用中的另一個URL:
$location.path('/'); // 把路徑修改為 '/' 路由
2. replace()
如果你希望跳轉后用戶不能點擊后退按鈕(對於登錄之后的跳轉這種發生在某個跳轉之后的
再次跳轉很有用), AngularJS提供了replace() 方法來實現這個功能:
$location.path('/home');
$location.replace();
// 或者
$location.path('/home').replace();
。。。。。。后續
