在平時的項目開發中,應該會常常遇到上圖所示的需求,就是在一個頁面中有多個標籤,被選中的標籤顏色會高亮顯示,切換不一樣標籤顯示相應的不一樣內容。若是內容代碼過多則寫在同一個html文件就會顯得特別亂,因此這裏咱們最好把頁面代碼分開單獨管理,controller也能夠分開來管理,這樣就會顯得清楚的多。這裏就要使用到Angularjs中個ng-include指令。javascript
首先須要瞭解需求:html
1.同時只能選中一個標籤java
2.被選中的標籤背景色以及自體顏色都將改變。ionic
第一個需求咱們可使用一個flag變量來控制,即一個是flag另外一個則是!flag。而第二個需求則可使用ng-class指令來完成,提早把兩個樣式的class寫好,經過ng-class來判斷什麼時候顯示何種樣式便可。url
這裏我把全部的邏輯代碼都寫在了HTML頁面中,首先在頁面初始化的時候使用ng-init指令初始化一個flag變量,使用ng-class綁定不一樣的樣式,而後使用ng-click事件來動態改變flag。代碼以下:spa
<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>
多標籤button編寫好了,須要對點擊的button展現對應的頁面內容,這裏使用ng-include來管理代碼。以下:code
<ion-content class="has-subheader"> <div ng-show="test" ng-include="'template/template1.html'">這裏無論寫什麼都不會展現,徹底被ng-include取代</div> <div ng-show="!test" ng-include="'template/template2.html'"></div> </ion-content>
這裏我使用的是ng-show,即在頁面加載的時候就把所有的內容加載完畢了,能夠起到一個預加載的效果,固然,若是須要點擊對應button的時候再展現相應的內容則可使用ng-if,效果同樣。htm
ng-include後面寫的是html文件對應的url地址,是相對於index.html的地址。事件
來看一下template1的代碼:ip
<div ng-controller="template1Controller"> <div class="row"> <div class="col text-center" ng-repeat="x in tests">{{x.name}}</div> </div> </div>
我對template1進行了單獨的controller管理,Ctrl代碼爲:
angular.module('includeExample', ['ionic']) .controller('template1Controller', ['$scope', function ($scope) { $scope.tests = [ { name: 'test1' }, { name: 'test2' }, { name: 'test3' } ] }]);
到這,Ng-Include的用法大概就說完了,我以爲在項目的開發中仍是比較有用的,分開管理邏輯和頁面都會比較清晰,也會在必定程度上提升開發效率。
效果爲: