主題:
本篇主要目的就是繼續完善home頁,增加tab導航的三個頁index index1 index2
效果圖:
細節:
初始化的JS就是咱們的home.js,仔細來看。
angular的route模塊是單獨出來的,所以可以看到,在咱們的home/index.html文件中,在head里自然是要加上"../lib/angular-1.2.7/angular-route.js"的JS的。
僅僅這樣還是不可以的,因為route是單獨的一個模塊,所以在咱們實例化app模塊的時候,需要在依賴的模塊列表中加上route的module名“ngRoute”,也就是在home.js中:
可以看到咱們還依賴了homeControllers,稍后咱們說明。
下面就是route的使用了,實例化的模塊app有一個config的方法,通過它可以在app跑起來之前做一些配置性工作,而咱們的路由設置什么的就是在config中完成的。
config支持依賴注入的,但是只能providers 和 constants是可以被注入進去的。這里咱們需要將$routeProvider和$locationProvider注入進去;$routeProvider是針對於route配置的provider,$locationProvider相應的就是配置location相關的了,這里咱們把$locationProvider一進來的目的主要是我希望的是在高級瀏覽器上是以html5Mode更改URL,並且針對於IE8 9 這樣的不支持的設置hashPrefix為“!”(默認html5Mode是false hashPrefix是'')。
到這里咱們還沒有進行route的配置呢,下面看:
這種配置方式用起來很爽,$routeProvider的規則詳見官網,這里咱們用到了templateUrl和controller;templateUrl很好理解,當路由匹配的時候,去使用那個模板(模板是會被緩存住的,詳見templateCache),controller當然是針對於這個view的控制器了,這里為了方便管理,咱們把所有的home的controller全部集中起來用homeControllers這個模塊來管理,這也就是咱們前面說的在初始化app模塊的時候,在依賴模塊列表中加入homeControllers這個模塊名的原因。
下面就一起來簡單看下homeController中的東西:
由於目前沒什么功能,所以這里只是簡單的定義一個homeControllers,然后通過他的controller方法定義一堆controller。
到這里還有一個問題,那就是怎么去切換tab的時候,讓每一個tab的classname跟着改變,也就是去改變顯示的狀態,看代碼:
可以看到,咱們在routescope上監聽了$routeChangeSuccess事件,當路由change完成的時候,咱們就去更改$rootScope.path的值,而在home/index.html中
咱們在每一個li上利用ng-class指令,判斷path是那種狀態,然后去改變class的。
結束語:
這里,咱們可以看到,咱們的app已經能進行簡單的路由導航了,下篇繼續。
本篇源碼:https://github.com/dolymood/angular-example/tree/ls_3
歡迎吐槽