AngularJs筆記-- ui-router替換frameset布局

說到frameset叹括,一些老的前端工程師肯定不陌生,是一種用于實現(xiàn)框架式布局的標簽宵荒,但是在Html5中將這個標簽廢棄掉了汁雷。那么,在如今Html5大行天下的時代报咳,我們又如何去實現(xiàn)框架式布局呢侠讯?

本片文章,我們將介紹一下如何在H5中實現(xiàn)框架式布局暑刃,這邊我們需要借助AngularJs框架(多這個框架不熟悉的厢漩,建議先去學習一下基礎再來看這篇文章),在AngularJs中實現(xiàn)了一個叫ng-router的路由框架岩臣,它式用于實現(xiàn)H5頁面跳轉的袁翁,但是他的跳轉與我們想要的框架式布局不同,它實現(xiàn)的式整個頁面的跳轉婿脸,而不是頁面內局部內容的跳轉粱胜。

這邊我們要引入本片文章的核心AngularUI提供的ui-router,AngularUI是國外牛人基于AngularJs的拓展,他提供了很多的module可以方面我們使用狐树,這邊我們使用ui-router這個Module可以實現(xiàn)我們需要的框架式布局焙压。

下面,我們來看一下源碼:

1.創(chuàng)建index.html,他是web app的入口頁面

...
    <script src="frameworks/angular.js"></script>
    <script src="frameworks/angular-ui-router.js"></script>
    <script src="js/app.js"></script>
...
<body ng-app="app">
    <nav style="background-color: grey">
        <a href="#" ui-sref="page1">Page1</a>
        <a href="#" ui-sref="page2">Page2</a>
        <a href="#" ui-sref="page3">Page3</a>
    </nav>
    <div ui-view=""></div>
</body>

1.首先需要導入angularJs與ui-router兩個庫抑钟,請自行下載涯曲,app.js在后面講解。
2.body 帶有ng-app在塔,告訴angularJs幻件,body包起來的代碼是angular需要維護的代碼塊(angular基礎知識)
3.ui-sref為告訴ui-router根據(jù)當前狀態(tài)加載頁面。
4.ui-view蛔溃,ui-router實現(xiàn)框架式布局的占位符绰沥,可以定義名字

2.創(chuàng)建page1~2

<!-- Page1 -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body >
    <div>
        <div style="width: 20%; float: left">
            <ul>
                <li><a href="#" ui-sref=".tab1">Tab1</a></li>
                <li><a href="#" ui-sref=".tab2">Tab2</a></li>
            </ul>
        </div>
        <div style="float: left; width: 80%" ui-view=""></div>
    </div>
</body>
</html>

<!-- Page2 -->
<!--<h1 style="background-color: green">This is page2</h1>-->
<div style="background-color: green">
  <div ui-view="content1"></div>
  <div ui-view="content2"></div>
</div>

3.創(chuàng)建page1對應的兩個tab

<!-- page1_tab1.html -->
<div style="height: 400px;background-color: cadetblue">This is Tab1 in Page1</div>

<!-- page1_tab2.html -->
<div style="height: 400px;background-color: darkolivegreen">This is Tab1 in Page2</div>

4.關鍵的app.js

var app = angular.module("app", ['ui.router']);
app.config(function ($stateProvider, $urlRouterProvider) {

    $urlRouterProvider.otherwise("/page1");
    $stateProvider
        .state("page1",{
            url:"/page1",
            templateUrl:"tmpls/page1.html"
        })
        .state("page2", {
            url:"/page2",
            // templateUrl:"tmpls/page2.html"
            views:{
                '':{
                    templateUrl:"tmpls/page2.html"
                },
                'content1@page2':{
                    template:'我是content1'
                },
                'content2@page2':{
                    template:'我是content2'
                }
            }
        })
        .state("page3",{
            url:"/page3",
            template:"This is page3"
        })
        .state("page1.tab1", {
            url:"/page1_tab1",
            templateUrl:"tmpls/page1_tab1.html"
        })
        .state("page1.tab2", {
            url:"/page1_tab2",
            templateUrl:"tmpls/page1_tab2.html"
        });;
});

1.$urlRouterProvider有兩個方法
? when():兩個參數(shù)篱蝇,第一個是希望匹配的路徑,第二個是沒有匹配到時希望重定向的路徑徽曲。
? otherwise():這個方法時沒有匹配到時重定向的路徑零截,類似于switch-case中的default
2.$stateProvider.state,記錄的時各種狀態(tài)跳轉信息,類似與switch-case
3.views主要用于布局中有多個ui-view的情況秃臣,可以對不同的ui-view使用特定的templateUrl等涧衙,絕對view使用‘@’符號來區(qū)別,比如content2@page2表明content2的ui-view使用了page2狀態(tài)的模板奥此。
4.當模板是html時弧哎,使用templateUrl;當模板就是一段文本時稚虎,使用template

至此傻铣,功能就已經實現(xiàn)了,當然還可以使用動畫來改變頁面切換的效果祥绞,大家可以嘗試一下非洲。

下載ui-router-md.zip

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蜕径,隨后出現(xiàn)的幾起案子两踏,更是在濱河造成了極大的恐慌,老刑警劉巖兜喻,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件梦染,死亡現(xiàn)場離奇詭異,居然都是意外死亡朴皆,警方通過查閱死者的電腦和手機帕识,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來遂铡,“玉大人肮疗,你說我怎么就攤上這事“墙樱” “怎么了伪货?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長钾怔。 經常有香客問我碱呼,道長,這世上最難降的妖魔是什么宗侦? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任愚臀,我火速辦了婚禮,結果婚禮上矾利,老公的妹妹穿的比我還像新娘姑裂。我一直安慰自己馋袜,他們只是感情好,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布炭分。 她就那樣靜靜地躺著,像睡著了一般剑肯。 火紅的嫁衣襯著肌膚如雪捧毛。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天让网,我揣著相機與錄音呀忧,去河邊找鬼。 笑死溃睹,一個胖子當著我的面吹牛而账,可吹牛的內容都是我干的。 我是一名探鬼主播因篇,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼泞辐,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了竞滓?” 一聲冷哼從身側響起咐吼,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎商佑,沒想到半個月后锯茄,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡茶没,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年肌幽,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抓半。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡喂急,死狀恐怖,靈堂內的尸體忽然破棺而出笛求,到底是詐尸還是另有隱情煮岁,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布涣易,位于F島的核電站画机,受9級特大地震影響,放射性物質發(fā)生泄漏新症。R本人自食惡果不足惜步氏,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望徒爹。 院中可真熱鬧荚醒,春花似錦芋类、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至泡躯,卻和暖如春贮竟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背较剃。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工咕别, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人写穴。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓惰拱,卻偏偏與公主長得像,于是被迫代替她去往敵國和親啊送。 傳聞我的和親對象是個殘疾皇子偿短,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內容