Angular.js中ng-include用法及多標(biāo)簽頁(yè)面的實(shí)現(xiàn)方式詳解
前言
大家在平時(shí)的項(xiàng)目開發(fā)中,應(yīng)該會(huì)經(jīng)常遇到上圖所示的需求,就是在一個(gè)頁(yè)面中有多個(gè)標(biāo)簽,被選中的標(biāo)簽顏色會(huì)高亮顯示,切換不同標(biāo)簽顯示相應(yīng)的不同內(nèi)容。如果內(nèi)容代碼過多則寫在同一個(gè)html文件就會(huì)顯得特別亂,所以這里我們最好把頁(yè)面代碼分開單獨(dú)管理,controller也可以分開來(lái)管理,這樣就會(huì)顯得清楚的多。
這里就要使用到Angularjs中個(gè)ng-include指令。下面來(lái)看看詳細(xì)的介紹:
一、多標(biāo)簽的編寫
首先需要了解需求:
1.同時(shí)只能選中一個(gè)標(biāo)簽
2.被選中的標(biāo)簽背景色以及自體顏色都將改變。
第一個(gè)需求我們可以使用一個(gè)flag變量來(lái)控制,即一個(gè)是flag另一個(gè)則是!flag。而第二個(gè)需求則可以使用ng-class指令來(lái)完成,提前把兩個(gè)樣式的class寫好,通過ng-class來(lái)判斷何時(shí)顯示何種樣式即可。
這里我把所有的邏輯代碼都寫在了HTML頁(yè)面中,首先在頁(yè)面初始化的時(shí)候使用ng-init指令初始化一個(gè)flag變量,使用ng-class綁定不同的樣式,然后使用ng-click事件來(lái)動(dòng)態(tài)改變flag。
代碼如下:
<ion-view ng-init="test=true"> <div class="bar bar-header bar-royal"> <div class="title">Test</div> </div> <div class="bar bar-subheader"> <div class="button-bar"> <a class="button" ng-class="test?'button-positive':''" ng-click="test=true">button1</a> <a class="button" ng-class="!test?'button-positive':''" ng-click="test=false">button2</a> </div> </div> <ion-content class="has-subheader"> </ion-content> </ion-view>
二、Ng-Include的使用
多標(biāo)簽button編寫好了,需要對(duì)點(diǎn)擊的button展示對(duì)應(yīng)的頁(yè)面內(nèi)容,這里使用ng-include來(lái)管理代碼。如下:
<ion-content class="has-subheader"> <div ng-show="test" ng-include="'template/template1.html'">這里不管寫什么都不會(huì)展示,完全被ng-include取代</div> <div ng-show="!test" ng-include="'template/template2.html'"></div> </ion-content>
這里我使用的是ng-show,即在頁(yè)面加載的時(shí)候就把全部的內(nèi)容加載完畢了,可以起到一個(gè)預(yù)加載的效果,當(dāng)然,如果需要點(diǎn)擊對(duì)應(yīng)button的時(shí)候再展示相應(yīng)的內(nèi)容則可以使用ng-if,效果一樣。
ng-include后面寫的是html文件對(duì)應(yīng)的url地址,是相對(duì)于index.html的地址。
來(lái)看一下template1的代碼:
<div ng-controller="template1Controller">
<div class="row">
<div class="col text-center" ng-repeat="x in tests">{{x.name}}</div>
</div>
</div>
我對(duì)template1進(jìn)行了單獨(dú)的controller管理,Ctrl代碼為:
angular.module('includeExample', ['ionic'])
.controller('template1Controller', ['$scope', function ($scope) {
$scope.tests = [
{
name: 'test1'
}, {
name: 'test2'
}, {
name: 'test3'
}
]
}]);
到這,Ng-Include的用法大概就說(shuō)完了,我覺得在項(xiàng)目的開發(fā)中還是比較有用的,分開管理邏輯和頁(yè)面都會(huì)比較清晰,也會(huì)在一定程度上提高開發(fā)效率。
效果為:

總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家學(xué)習(xí)或者使用Angular.js能帶來(lái)一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
Angular異步執(zhí)行學(xué)習(xí)之zone.js使用
這篇文章主要為大家介紹了Angular異步執(zhí)行學(xué)習(xí)之zone.js使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
對(duì)angular 實(shí)時(shí)更新模板視圖的方法$apply詳解
今天小編就為大家分享一篇對(duì)angular 實(shí)時(shí)更新模板視圖的方法$apply詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2018-10-10
AngularJS基礎(chǔ)學(xué)習(xí)筆記之簡(jiǎn)單介紹
AngularJS 不僅僅是一個(gè)類庫(kù),而是提供了一個(gè)完整的框架。它避免了您和多個(gè)類庫(kù)交互,需要熟悉多套接口的繁瑣工作。它由Google Chrome的開發(fā)人員設(shè)計(jì),引領(lǐng)著下一代Web應(yīng)用開發(fā)。也許我們5年或10年后不會(huì)使用AngularJS,但是它的設(shè)計(jì)精髓將會(huì)一直被沿用。2015-05-05
Angular使用過濾器uppercase/lowercase實(shí)現(xiàn)字母大小寫轉(zhuǎn)換功能示例
這篇文章主要介紹了Angular使用過濾器uppercase/lowercase實(shí)現(xiàn)字母大小寫轉(zhuǎn)換功能,涉及AngularJS過濾器針對(duì)字符串轉(zhuǎn)換的簡(jiǎn)單使用技巧,需要的朋友可以參考下2018-03-03
Angular 4依賴注入學(xué)習(xí)教程之簡(jiǎn)介(一)
依賴注入式AngularJS的重要特性之一,依賴注入簡(jiǎn)化了Angular解析模塊/組件之間依賴的過程。下面這篇文章主要給大家介紹了關(guān)于Angular 4依賴注入基礎(chǔ)的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-06-06
AngularJS bootstrap啟動(dòng)詳解及實(shí)例代碼
這篇文章主要介紹了AngularJS bootstrap啟動(dòng)的知識(shí),這里整理了相關(guān)資料及簡(jiǎn)單實(shí)例代碼,,需要的朋友可以參考下2016-09-09
詳解使用angularjs的ng-options時(shí)如何設(shè)置默認(rèn)值(初始值)
本篇文章主要介紹了詳解使用angularjs的ng-options時(shí)如何設(shè)置默認(rèn)值(初始值),具有一定的參考價(jià)值,有興趣的可以了解一下2017-07-07
Bootstrap與Angularjs的模態(tài)框?qū)嵗a
這篇文章主要介紹了Bootstrap與Angularjs的模態(tài)框?qū)嵗a,需要的朋友可以參考下2017-08-08
AngularJS解決ng界面長(zhǎng)表達(dá)式(ui-set)的方法分析
這篇文章主要介紹了AngularJS解決ng界面長(zhǎng)表達(dá)式(ui-set)的方法,通過具體問題的分析并結(jié)合實(shí)例形式給出了AngularJS長(zhǎng)表達(dá)式的相關(guān)使用技巧,需要的朋友可以參考下2016-11-11

