最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

AngularJS入門教程之路由機(jī)制ngRoute實例分析

 更新時間:2016年12月13日 09:53:53   作者:鄭浩-  
這篇文章主要介紹了AngularJS入門教程之路由機(jī)制ngRoute,結(jié)合實例形式分析了AngularJS路由機(jī)制的原理、ngRoute的組成、配置、參數(shù)與相關(guān)使用技巧,需要的朋友可以參考下

本文實例講述了AngularJS路由機(jī)制ngRoute。分享給大家供大家參考,具體如下:

引言

在我們介紹路由之前我們首先談一下SPA,所以SPA就是我們現(xiàn)在經(jīng)常說的單頁應(yīng)用single page APP,為了實現(xiàn)無刷新的視圖切換我們之前的做法就是利用AJAX從后取出數(shù)據(jù)然后渲染在前臺頁面HTML中,但是AJAX有一個致命的缺點就是不能實現(xiàn)瀏覽器的后退按鈕失效,為了解決這個問題我們通常使用hash,監(jiān)聽hashchange事件來進(jìn)行視圖切換,另一個方法是用HTML5的history API,通過pushState()記錄操作歷史,監(jiān)聽popstate事件來進(jìn)行視圖切換,也有人把這叫pjax技術(shù)?;玖鞒倘缦拢?/p>

如此一來,便形成了通過地址欄進(jìn)行導(dǎo)航的深度鏈接(deeplinking ),也就是我們所需要的路由機(jī)制。通過路由機(jī)制,一個單頁應(yīng)用的各個視圖就可以很好的組織起來了。

ng-route包含的內(nèi)容

ng的路由機(jī)制是靠ngRoute提供的,通過hash和history兩種方式實現(xiàn)了路由,可以檢測瀏覽器是否支持history來靈活調(diào)用相應(yīng)的方式。ng的路由(ngRoute)是一個單獨的模塊,包含以下內(nèi)容:

•服務(wù)$routeProvider用來定義一個路由表,即地址欄與視圖模板的映射

•服務(wù)$routeParams保存了地址欄中的參數(shù),例如{id : 1, name : 'tom'}

•服務(wù)$location用來實現(xiàn)用于獲取當(dāng)前url以及改變當(dāng)前的url,并且存入歷史記錄

•服務(wù)$route完成路由匹配,并且提供路由相關(guān)的屬性訪問及事件,如訪問當(dāng)前路由對應(yīng)的controller

•指令ngView用來在主視圖中指定加載子視圖的區(qū)域

路由機(jī)制的實現(xiàn)

第一步、引入兩個依賴文件

<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
<script src="http://cdn.bootcss.com/angular.js/1.2.9/angular-route.min.js"></script>

因為路由機(jī)制上一個單獨的模塊,所以我們需要單獨的引入路由文件,僅僅引入AngularJS.min.js是不包含路由的,引入文件以后我們還需要在模塊聲明中注入對ng-route的依賴:

var app = angular.module("myApp", ['ngRoute']);

完成了這些,我們就可以在模板或是controller中使用上面的服務(wù)和指令了。下面我們需要定義一個路由表。

第二步:完成路由表的配置

app.config(['$routeProvider', function ($routeProvider) {
    $routeProvider
      .when('/div1', {
        template: '<p>這是div1{{text}}</p>',
        controller: 'div1Controller'
      })
      .when('/div2', {
        template: '<p>這是div2{{text}}</p>',
          controller: 'div2Controller'
      })
      .when('/div3', {
        template: '<p>這是div3{{text}}</p>',
        controller: 'div3Controller'
      })
      .when('/content/:id', {
        template: '<p>這是content{{id}}</p>',
        controller: 'div4Controller'
      })
      .otherwise({
        redirectTo: '/div1'
      });
}]);

$routeProvider提供了定義路由表的服務(wù),它有兩個核心方法,when(path,route)和otherwise(params),先看一下核心中的核心when(path,route)方法。

when(path,route)方法接收兩個參數(shù),path是一個string類型,表示該條路由規(guī)則所匹配的路徑,它將與地址欄的內(nèi)容($location.path)值進(jìn)行匹配。如果需要匹配參數(shù),可以在path中使用冒號加名稱的方式,如:path為/show/:name,如果地址欄是/show/tom,那么參數(shù)name和所對應(yīng)的值tom便會被保存在$routeParams中,像這樣:

{name : tom}。我們也可以用*進(jìn)行模糊匹配,如:/show*/:name將匹配/showInfo/tom。

參數(shù)說明如下:

controller //function或string類型。在當(dāng)前模板上執(zhí)行的controller函數(shù),生成新的scope
controllerAs //string類型,為controller指定別名
template //string或function類型,視圖所用的模板,這部分內(nèi)容將被ngView引用
templateUrl //string或function類型,當(dāng)視圖模板為單獨的html文件或是使用了<script type="text/ng-template">定義模板時使用
resolve //指定當(dāng)前controller所依賴的其他模塊
redirectTo //重定向的地址

第三步:在主視圖模板中指定加載子視圖的位置

我們的單頁面程序都是局部刷新的,那這個“局部”是哪里呢,這就輪到ngView出馬了,只需在模板中簡單的使用此指令,在哪里用,哪里就是“局部”。

通過以上我們就完成了了一個路由的全部配置過程,在沒有接觸路由的時候感覺路由這一塊是比價難的,但是當(dāng)我們真正的了解到這一塊的原理的時候并不是非常的難,路由在AngularJS中是核心部分所以我們需要牢牢的掌握這一部分。

友情推薦:

看到這可能會有人說如果有個完整的Ddeo就好了,所以說小編給大家推薦一個編寫前臺代碼的工具RunJS并且可以實現(xiàn)代碼的共享,小編的這個Demo就在這上面,可在此處查看效果;http://sandbox.runjs.cn/show/gj894e3t#/content/13

此處查看源碼:
http://runjs.cn/code/gj894e3t

這樣以后我們就可以隨意的分享代碼,尤其是我們在講課的時候非常的方便!

更多關(guān)于AngularJS相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《AngularJS入門與進(jìn)階教程》及《AngularJS MVC架構(gòu)總結(jié)

希望本文所述對大家AngularJS程序設(shè)計有所幫助。

相關(guān)文章

最新評論

河间市| 会理县| 富顺县| 吴旗县| 安远县| 莎车县| 卢氏县| 信阳市| 雷山县| 池州市| 隆子县| 德昌县| 裕民县| 水富县| 丰都县| 黔南| 阿克苏市| 古交市| 乐昌市| 宝兴县| 巢湖市| 铜鼓县| 嵊州市| 宜川县| 东阳市| 威海市| 门源| 建平县| 乌兰察布市| 开远市| 肥东县| 新巴尔虎左旗| 崇礼县| 通山县| 柳江县| 铜梁县| 筠连县| 偏关县| 金堂县| 景洪市| 西安市|