AngularJS通過ng-route實(shí)現(xiàn)基本的路由功能實(shí)例詳解
本文實(shí)例講述了AngularJS通過ng-route實(shí)現(xiàn)基本的路由功能。分享給大家供大家參考,具體如下:
為什么需要前端路由~
(1)AJAX不會(huì)留下History歷史記錄
(2)用戶無法通過URL進(jìn)入應(yīng)用指定的頁面(書簽或者分享等)
(3)AJAX對(duì)于SEO是一個(gè)災(zāi)難
1.一般情況下,我們?cè)L問網(wǎng)頁的時(shí)候,是通過url地址。
比如我們?cè)L問一個(gè)網(wǎng)頁:https://www.baidu.com/index/fix.html
在AngularJS中通過“#”來進(jìn)行不同頁面的路由,比如:
https://www.baidu.com/#/first,這個(gè)請(qǐng)求在向網(wǎng)頁端傳輸?shù)臅r(shí)候,服務(wù)器會(huì)自動(dòng)忽略#之后的內(nèi)容,因此可以根據(jù)#+標(biāo)記幫助我們區(qū)分不同的邏輯頁面并將不同的頁面綁定到對(duì)應(yīng)的控制器上。
這是一個(gè)簡(jiǎn)單的路由控制界面,根據(jù)鏈接中的#/first和#/second分別對(duì)應(yīng)跳轉(zhuǎn)到不同的頁面。
2.通過angularjs中的路由模塊,實(shí)現(xiàn)ng-route的步驟
(1)載入包含ng-route的JS文件
(2)包含了 ngRoute 模塊作為主應(yīng)用模塊的依賴模塊。
(3)使用原生指令ng-view
(4)我們?cè)趆tml中定義鏈接,可以實(shí)現(xiàn)一個(gè)單頁應(yīng)用,比如鏈接可以這樣定義:
<body> <ul> <li><a href="#/">首頁</a></li> <li><a href="#/first">第一頁面</a></li> <li><a href="#/second">第二頁面</a></li> <li><a href="#/third">第三頁面</a></li> </ul> <div ng-view></div> </body>
在js中的定義路由代碼為:
angular.module('myapp',['ngRoute']) .config(['$routeProvider',function($routeProvider){ $routeProvider.when('/',{template:'這是首頁頁面'}) .when('/first',{template:'這是第一個(gè)頁面'}) .when('/second',{template:'這是第二個(gè)頁面'}) .when('/third',{template:'這是第三個(gè)頁面'}) .otherwise({redirectTo:'/'}); }]);
(6)我們來看效果,首次當(dāng)未有鏈接切換時(shí)候,默認(rèn)的跳轉(zhuǎn)到首頁,效果如下:
當(dāng)依次點(diǎn)擊鏈接時(shí),會(huì)依次切換ng-view中的值,并且實(shí)現(xiàn)了ng-view內(nèi)內(nèi)容的替換~
I)初始效果
II)切換后的效果
我們發(fā)現(xiàn)改變的僅僅是#后的值,并沒有頁面的跳轉(zhuǎn)和刷新
3.angularJS中的路由設(shè)置對(duì)象
AngularJS 路由也可以通過不同的模板來實(shí)現(xiàn)。
$routeProvider.when 函數(shù)的第一個(gè)參數(shù)是 URL 或者 URL 正則規(guī)則,第二個(gè)參數(shù)為路由配置對(duì)象。
路由配置對(duì)象語法規(guī)則如下:
$routeProvider.when(url, { template: string, templateUrl: string, controller: string, function 或 array, controllerAs: string, redirectTo: string, function, resolve: object<key, function> });
參數(shù)解釋:
(1)template:
使用該概述,可以在template中寫入HTML內(nèi)容,典型的例子是:
when('/',{template:'這是首頁頁面'})
(2)templateUrl:
如果現(xiàn)在我們并不是要HTML內(nèi)容,而是需要一個(gè)模板文件來進(jìn)行整體替換,例子如下:
$routeProvider.when('/computers', { templateUrl: 'views/computers.html', });
(3)controller:function、string或數(shù)組類型,在當(dāng)前模板上執(zhí)行的controller函數(shù),生成新的scope。
也可以對(duì)應(yīng)的是控制器的名稱。
(4)redirectTo:重定向的地址
(5)resolve:當(dāng)前控制器所依賴的其他模塊~
更多關(guān)于AngularJS相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《AngularJS入門與進(jìn)階教程》及《AngularJS MVC架構(gòu)總結(jié)》
希望本文所述對(duì)大家AngularJS程序設(shè)計(jì)有所幫助。
相關(guān)文章
激動(dòng)人心的 Angular HttpClient的源碼解析
這篇文章主要介紹了Angular HttpClient的源碼解析,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07AngularJs解決跨域問題案例詳解(簡(jiǎn)單方法)
本文通過一個(gè)案例給大家介紹angularJs解決跨域問題,非常具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧2016-05-05AngularJS教程之簡(jiǎn)單應(yīng)用程序示例
本文主要介紹AngularJS簡(jiǎn)單應(yīng)用程序,這里提供了詳細(xì)的流程和代碼程序,有需要的小伙伴可以參考下2016-08-08Angular入口組件(entry component)與聲明式組件的區(qū)別詳解
這篇文章主要給大家介紹了關(guān)于Angular入口組件(entry component)與聲明式組件的區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-04-04AngularJS入門教程之學(xué)習(xí)環(huán)境搭建
這篇文章主要介紹了AngularJS入門教程之學(xué)習(xí)環(huán)境搭建,本教程將指導(dǎo)您完成一個(gè)簡(jiǎn)單的應(yīng)用程序創(chuàng)建過程,包括編寫和運(yùn)行單元測(cè)試、不斷地測(cè)試應(yīng)用,需要的朋友可以參考下2014-12-12AngularJS基礎(chǔ) ng-cut 指令介紹及簡(jiǎn)單示例
本文主要介紹AngularJS ng-cut 指令,這里對(duì)ng-cut指令的基礎(chǔ)資料進(jìn)行了整理,和詳細(xì)介紹,并附上代碼示例和實(shí)現(xiàn)效果圖,學(xué)習(xí)AngularJS 指令的朋友可以參考下2016-08-08