国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

AngularJS+Bootstrap3多級導航菜單的實現代碼

2019-11-19 15:46:43
字體:
來源:轉載
供稿:網友

將介紹如何用AngularJS構建一個強大的web前端系統。angularjs是由Google團隊開發的一款非常優秀web前端框架。在當前如此多的web框架下,AngularJS能脫穎而出,從架構設計上就高人一等,雙向數據綁定,依賴注入,指令,MVC,模板。Angular.js創新地把后臺技術融入前端開發,掃去jQuery一度的光芒。用angularjs就像寫后臺代碼,更規范,更結構化,更可控。

本文將介紹如何實現多限級導航菜單。

bootstrap3-navbar

目錄

1.靜態多級菜單實現

2.動態多級菜單實現

1. 靜態多級菜單實現

要實現多級菜單,我們要分兩步走,第一步就是把靜態菜單的功能實現,通過純靜態的HTML代碼完成。第二步,通過Angluarjs進行動態實現,最后把數據和程序分離,通過Ajax加載多級菜單數據。

我們先從靜態多級菜單開始動手,一個六級導航菜單是什么樣子呢?

m-nav1

如上圖所示,我們定義一些功能需求。

1級菜單是導航條上的文字。

當1級菜單導航事件被觸發,顯示2級菜單導航,在1級菜單的正下方顯示。

當2級菜單導航事件被觸發,顯示3級菜單導航,在2級菜單的右方顯示。

當3級菜單導航事件被觸發,顯示4級菜單導航,在3級菜單的右方顯示。

以此類推,不考慮下級菜單顯示出界問題。

繼續上文中的項目環境,增加一個新HTML文件: page3.html

~ vi D:/workspace/javascript/angular-navbar/page3.html<!DOCTYPE html><html lang="zh-cn"><head> <meta charset="utf-8"> <title>多級導航菜單</title> <meta name="description" content="多級導航菜單"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="fragment" content="!" /> <link rel="stylesheet" href="/bower_components/bootstrap/dist/css/bootstrap.min.css" rel="external nofollow" rel="external nofollow" > <link rel="stylesheet" href="/css/main.css" rel="external nofollow" rel="external nofollow" ></head><body ng-app="page2"><div class="container"> <div class="row" ng-controller="NavbarCtrl">  <nav class="navbar navbar-default" role="navigation">   <div class="navbar-header">    <a class="navbar-brand" href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >多級菜單導航</a>   </div>   <div class="collapse navbar-collapse navbar-ex1-collapse">    <ul class="nav navbar-nav">     <li class="active"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Link</a></li>     <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Link</a></li>     <li class="dropdown">      <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="dropdown-toggle" data-toggle="dropdown">Multi Level <b class="caret"></b></a>      <ul class="dropdown-menu menu-top">       <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Level 1</a></li>       <li class="dropdown-submenu"> <a tabindex="-1" href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >More options</a>        <ul class="dropdown-menu">         <li><a tabindex="-1" href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Level 2</a>         </li>         <li class="dropdown-submenu"> <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >More..</a>          <ul class="dropdown-menu">           <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Level 3</a>           </li>           <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Level 3</a>           </li>           <li class="dropdown-submenu"> <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >More..</a>            <ul class="dropdown-menu">             <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Level 4</a>             </li>             <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Level 4</a>             </li>             <li class="dropdown-submenu"> <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >More..</a>              <ul class="dropdown-menu">               <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Level 5</a>               </li>               <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Level 5</a>               </li>              </ul>             </li>            </ul>           </li>          </ul>         </li>         <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Level 2</a>         </li>         <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Level 2</a>         </li>        </ul>       </li>       <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Level 1</a></li>      </ul>     </li>    </ul>   </div>  </nav> </div></div><script src="/bower_components/jquery/dist/jquery.min.js"></script><script src="/bower_components/angular/angular.min.js"></script><script src="/bower_components/bootstrap/dist/js/bootstrap.min.js"></script><script src="/bower_components/angular-route/angular-route.min.js"></script><script src="/bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js"></script><script src="/js/app.js"></script></body></html>

新建一個css文件:main.css

~ vi D:/workspace/javascript/angular-navbar/css/main.css.dropdown:hover .menu-top { display: block;}.dropdown-submenu{ position:relative;}.dropdown-submenu > .dropdown-menu{ top:0; left:100%; margin-top:-6px; margin-left:-1px; -webkit-border-radius:0 6px 6px 6px; -moz-border-radius:0 6px 6px 6px; border-radius:0 6px 6px 6px;}.dropdown-submenu:hover > .dropdown-menu{ display:block;}.dropdown-submenu > a:after{ display:block; content:" "; float:right; width:0; height:0; border-color:transparent; border-style:solid; border-width:5px 0 5px 5px; border-left-color:#cccccc; margin-top:5px; margin-right:-10px;}.dropdown-submenu:hover > a:after{ border-left-color:#ffffff;}.dropdown-submenu .pull-left{ float:none;}.dropdown-submenu.pull-left > .dropdown-menu{ left:-100%; margin-left:10px; -webkit-border-radius:6px 0 6px 6px; -moz-border-radius:6px 0 6px 6px; border-radius:6px 0 6px 6px;}

刷新一下網頁,我們能就看到上面的截圖的效果,代碼參考:http://firdaus.grandexa.com/2013/09/twitter-bootstrap-3-multilevel-dropdown-menu/

通過HTML和CSS就實現了多級菜單的靜態展示效果,如果導航菜單不是經常變化,那么用靜態的方式,把代碼寫死就可以了。但有一些場景,菜單是需要動態生成,比如通過權限控制訪問鏈接,每個用戶的權限不一樣,那么能看到的菜單選項也就不一樣,這個時候就需要做成動態的,用程序去控制菜單的加載和展示。

2. 動態多級菜單實現

有了靜態多級導航菜單的HTML代碼結構,改寫成動態的,其實也不太復雜。

我們需要做2件事:

把導航菜單的數據結構化存儲,比如 存放到文件 nav.json。

用Angularjs的API加載nav.json數據,進行展示。

我們先定義一下導航菜單的數據格式,以JSON格式定義,每個菜單項都有3個屬性字段

label: 導航菜單項顯示的名字。

link: 導航菜單項的跳轉鏈接,可以不定義。

children: 導航菜單項的子菜單,循環對象存儲。

{ "label": "levelA", "link": "#", "children": [  {   "label": "levelB",   "link": "#",   "children": []  } ]}

下面我們用真實的數據定義導航菜單,以我的金融系統為例。

m-nav3

新建JSON數據文件:nav.json。

~ vi D:/workspace/javascript/angular-navbar/js/nav.json[ {  "label": "債券",  "children": [   {    "label": "可轉債",    "children": [     {"label": "可轉債溢價率分析","link":"#"},     {"label": "可轉債NS定價","link":"#"},     {"label": "可轉債歸因分析","link":"#"},     {"label": "可轉債套利實時監控","link":"#"}    ]   },   {    "label": "信用債",    "children": [     {"label": "交易所債券監控","link":"#"}    ]   },   {    "label": "利率債","link":"#",    "children": []   },   {    "label": "國債期貨",    "children": [     {"label": "國債期貨表現分析","link":"#"},     {"label": "國債期貨實時套利監控","link":"#"},     {"label": "IRR歷史時間序列查詢","link":"#"},     {"label": "IRR實時監控","link":"#"}    ]   }  ] }, {  "label": "股票",  "children": [   {    "label": "基本面分析",    "children": [     {"label": "上市公司基本面數據查看","link":"#"}    ]   },   {    "label": "量化選股策略",    "children": []   }  ] }, {  "label": "宏觀",  "children": [   {    "label": "宏觀數據",    "children": [     {"label": "宏觀數據概覽","link":"#"}    ]   },   {    "label": "宏觀經濟預測",    "children": []   },   {    "label": "宏觀經濟和大類資產表現",    "children": []   }  ] }]

我們看到這個導航菜單的數據,有3級,“債券

主站蜘蛛池模板: 彰武县| 兰坪| 东山县| 玛沁县| 镇原县| 从化市| 若羌县| 浑源县| 克什克腾旗| 蓬溪县| 大渡口区| 理塘县| 庆阳市| 云浮市| 龙门县| 建瓯市| 海口市| 手游| 宜昌市| 集安市| 荆州市| 阜新市| 嵊州市| 吉首市| 宁陕县| 富源县| 深泽县| 清河县| 准格尔旗| 邯郸市| 历史| 仪陇县| 延吉市| 临猗县| 永福县| 翁牛特旗| 新巴尔虎左旗| 中方县| 庆安县| 永吉县| 渭源县|