1) 添加引用類庫(ionic樣式和ionic js文件) 2) 標題欄,頁腳欄,內容區 3) Js引入ionic類庫,添加頁面操做方法和對象 4) 數據初始化 5) Html頁面綁定方法和對象 <!DOCTYPE html> <html ng-app="myApp"> <head> <meta charset="UTF-8"> <meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no,width=device-width,height=device-height"> <link href="http://code.ionicframework.com/nightly/css/ionic.min.css" rel="stylesheet"> <script src="http://code.ionicframework.com/nightly/js/ionic.bundle.min.js"></script> </head> <body ng-controller="myCtrl"> <ion-header-bar align-title="center" class="bar-positive"> 1. 標題欄 <div class="buttons"> <button class="button">Left Button</button> </div> <h1 class="title">ion-header-bar</h1> <a class="button button-clear icon ion-cloud"></a> </ion-header-bar> <ion-content class="has-header" overflow-scroll="true"> 3. 內容區 <!--Form對象 --> <div class='list card' ng-controller="contr-2"> <h3> 控制器</h3> <label class="item item-input"> <span class="input-label">First Name:</span> <input type="text" ng-model="firstName" placeholder="First Name"> </label> <label class="item item-input"> <span class="input-label">Last Name:</span> <input type="text" ng-model="lastName" placeholder="Last Name"> </label> <label class="item"> Full Name : <span ng-bind="firstName + ',' + lastName"></span></label> <button class="button button-calm button-block" ng-click="hello()">button-light</button> </div> <!--列表對象 --> <ul class="list card" ng-init="number=[1,2,2,3,4]" > <li class="item" ng-repeat="x in number track by $index"> 遍歷重複集合 <span ng-bind="$index"></span> : {{x}} 索引號 </li> </ul> <ul class="list"> <li class="item" ng-repeat="item in items"> <span ng-bind="$index"></span> :{{item}} </li> </ul> </ion-content> <ion-footer-bar align-title="left" class="dark-bg"> 2. 頁腳欄 <div class="buttons"> 按鈕 <button class="button" ng-click="doSomething()">Left Button</button> </div> <h1 class="title light">ion-footer-bar</h1> 標題 <div class="button-bar"> 工具組 <a class="button button-clear icon ion-ios-loop" ></a> </div> </ion-footer-bar> </body> <script> angular.module("myApp",["ionic"]) .controller("contr-2",function($scope){ $scope.firstName = 'zhang'; $scope.lastName = 'san'; $scope.hello = function () { alert("hello!"); }; }) .controller("myCtrl",function($scope){ 添加控制器 $scope.items = []; 數據初始化 for(var i=0;i<20;i++) $scope.items.push("line " + i); $scope.doSomething = function () { 添加方法 console.log("doSomething。。。"); }; }); </script> </html> 1.4.1. ionic 頭部和底部 ion-header-bar 若是給它加上'bar-subheader' 這個樣式,它就是副標題 align-title 對齊若是沒有設置,它將會按照手機的默認排版(Ios的默認是居中,Android默認是居左)。它的值能夠是 'left','center','right'。 no-tap-scroll 設置 header-bar 是否跟隨着內容的滾動而滾動,就是是否固定在頂部。它的值是布爾值(true/false) ion-footer-bar align-title 若是沒有設置,它將會按照手機的默認排版(Ios的默認是居中,Android默認是居左)。它的值能夠是 'left','center','right'。 與 ion-header-bar 不一樣的是,ion-footer-bar 只有 align-title 這個 API。 ion-content 指令定義內容區域. overflow-scroll="true" 使用系統內置的滾動條 1.4.2. 表單輸入 ion-checkbox ion-radio ion-spinner <body ng-controller="myCtrl"> <div class="list card"> <div class="item item-divider"> 當前支付方式: {{ data.pay }} </div> <ion-radio ng-repeat="item in payList" ng-value="item.value" ng-model="data.pay"> {{ item.text }} </ion-radio> <div class="item item-divider">pay : {{ data.pay }}</div> <ion-radio ng-repeat="item in payList" ng-value="item.value" ng-model="data.pay" ng-change="payChange(item)" name="pay"> {{ item.text }} </ion-radio> <div class="item item-divider"> pay: {{ data.pay }} <br> mycity: {{ mycity }}<br> <select ng-model="data.pay" ng-options="pay.value as pay.text for pay in payList" ng-change="payChange(data)"></select> <select ng-model="mycity.value" ng-options="city.value as city.name group by city.group for city in Cities" ng-change="cityChange(mycity)"></select>注意綁定值,傳遞參數 </div> </div> <!--綁定json列表數據的text和checked--> <div class="list card"> <!--選中顏色 --> <ion-checkbox class="checkbox-dark" ng-repeat="item in devList" ng-model="item.checked" ng-checked="item.checked"> {{ item.text }}: {{item. checked }} </ion-checkbox> <ion-toggle ng-repeat="item in devList" ng-model="item.checked" ng-checked="item.checked"> {{ item.text }} </ion-toggle> </div> <!--綁定json對象數據的checked 數據改變事件--> <ion-checkbox ng-model="pushNotification.checked" ng-change="pushNotificationChange()">Push Notifications</ion-checkbox> <ion-toggle ng-model="pushNotification.checked" ng-change="pushNotificationChange()">Push Notifications</ion-toggle> <!--綁定 判斷是否選中--> <ion-checkbox ng-model="emailNotification" ng-true-value="Subscribed" ng-false-value="Unubscribed"> Newsletter</ion-checkbox> <ion-toggle ng-model="emailNotification" ng-true-value="Subscribed" ng-false-value="Unubscribed" toggle-class="toggle-assertive" > Newsletter </ion-toggle> <!--查看json對象--> <div class="item"> <pre ng-bind="devList | json"></pre> <pre ng-bind="pushNotification | json"></pre> <pre ng-bind="emailNotification | json"></pre> </div> <div class="list"> <div class="item item-divider"> 當前支付方式: {{ data.pay }} pay : {{ data.pay }} </div> <ion-radio ng-repeat="item in payList" ng-value="item.value" ng-model="data.pay"> {{ item.text }} </ion-radio> <ion-radio ng-repeat="item in payList" ng-value="item.value" ng-model="data.pay" ng-change="payChange(item)" name="pay"> {{ item.text }} </ion-radio> </div> </div> </body> </html> <script> angular.module("myApp",["ionic"]) .controller('myCtrl', function ($scope) { $scope.mycity = { id: 1, name: '北京',value: 'beijng', group: '中國' }; $scope.Cities = [{ id: 1, name: '北京',value: 'beijng', group: '中國' }, { id: 2, name: '上海',value: 'shanghai', group: '中國' },{ id: 3, name: '廣州',value: 'guangzhou', group: '中國' }]; $scope.cityChange = function(item) {console.log("item", item); }; $scope.payList = [{ text: "albaba alipay", value: "alipay" },{ text: "ebay paypal", value: "paypal" } ]; $scope.data = { pay: 'alipay'}; $scope.payChange = function(item) { console.log("pay:", item.pay); }; ///////////////////////////////////////// $scope.devList = [{ text: "HTML5", checked: true},{ text: "CSS3", checked: false},{ text: "JavaScript", checked: false}]; $scope.pushNotification = { checked: true}; $scope.emailNotification = 'Subscribed'; $scope.pushNotificationChange = function () { console.log('Push Notification Change', $scope.pushNotification.checked); }; }); </script> 1.4.2.1. 複選按鈕 : ion-checkbox 開關按鈕ion-toggle 支持數據綁定。使用可選的ng-model屬性, 綁定:可直接綁定列表對象,根據item對象是否選中;可直接綁定對象屬性true;可綁定對象的文本是否爲指定的值。 事件:ng-change 對象選中值改變 1.4.2.2. 單選按鈕 : ion-radio 使用可選的ng-model屬性,實現與做用域變量的數據綁定 使用可選的ng-value屬性,可使用做用域變量設置單選按鈕對應的值 list列表json對象中選中單個json, ng-change 對象選中值改變 傳入 item 1.4.2.3. 下拉選擇 : select 使用可選的ng-model屬性,實現與做用域變量的數據綁定 <select ng-model="mycity.value" ng-options="city.value as city.name group by city.group for city in Cities" ng-change="cityChange(mycity)"></select> ng-model爲實際選中的值mycity,ng-options對列表對象或hashmap輪詢,分組。處理好顯示信息和實際值 , ng-change 對象選中值改變 傳入 item 1.4.2.4. 等待指示器 : ion-spinner <ion-item ng-repeat="item in items" > <ion-spinner icon="{{item}}"></ion-spinner> </ion-item> $scope.items = ["android","ios","ios-small","bubbles","circles","crescent","dots","lines","ripples","spiral"]; 1.4.3. ionic 手勢事件 1.4.3.1. on-hold長按的時間是500毫秒 <button on-hold="onHold()" class="button"> Test</button> 1.4.3.2. on-tap 這個是手勢輕擊事件,若是長按時間超過250毫秒,那就不是輕擊了。。 <button on-tap="onTap()" class="button"> Test </button> 1.4.3.3. on-double-tap手雙擊屏幕事件 <button on-double-tap="onDoubleTap()"class="button"> Test</button> 1.4.3.4. on-touch 這個和 on-tap 仍是有區別的,這個是當即執行,並且是用戶點擊立馬執行。不用等待 touchend/mouseup 。 <button on-touch="onTouch()" class="button"> Test </button> 1.4.3.5. on-release 當用戶結束觸摸事件時觸發。 <button on-release="onRelease()" class="button"> Test</button> 1.4.3.6. on-drag 這個有點相似於PC端的拖拽。當你一直點擊某個物體,而且手開始移動,都會觸發 on-drag。 <button on-drag="onDrag()"class="button"> Test</button> 1.4.3.7. on-drag-up 向上拖拽 <button on-drag-up="onDragUp()" class="button"> Test</button> 1.4.3.8. on-drag-right向右拖拽。 <button on-drag-right="onDragRight()" class="button"> Test</button> 1.4.3.9. on-drag-down 向下拖拽 <button on-drag-down="onDragDown()" class="button">Test</button> 1.4.3.10. on-drag-left 向左邊拖拽 <button on-drag-left="onDragLeft()" class="button">Test</button> 1.4.3.11. on-swipe 指手指滑動效果 能夠是任何方向上的。並且也和 on-drag 相似,都有四個方向上單獨的事件。 <button on-swipe="onSwipe()" class="button"> Test</button> 1.4.3.12. on-swipe-up 向上的手指滑動效果。 <button on-swipe-up="onSwipeUp()" class="button"> Test</button> 1.4.3.13. on-swipe-right 向右的手指滑動效果。 <button on-swipe-right="onSwipeRight()" class="button"> Test</button> 1.4.3.14. on-swipe-down 向下的手指滑動效果。 <button on-swipe-down="onSwipeDown()" class="button"> Test</button> 1.4.3.15. on-swipe-left 向左的手指滑動效果 <button on-swipe-left="onSwipeLeft()" class="button"> Test</button> 1.4.3.16. $ionicGesture 一個angular服務展現ionicionic.EventController手勢。 on(eventType, callback, $element) 在一個元素上添加一個事件監聽器。 eventType string 監聽的手勢事件。 callback function(e) 當手勢事件發生時觸發的事件。 $element element angular元素監聽的事件。 options object 對象。 off(eventType, callback, $element) 在一個元素上移除一個手勢事件監聽器。 eventType string 移除監聽的手勢事件。 callback function(e) 移除監聽器。 $element element 被監聽事件的angular元素。 1.4.4. ionic 列表操做以及高性能的ng-repeat <ion-header-bar class="bar-positive"> 經過ng-click修改變量,進而控制按鈕是否顯示 <a class="button button-clear icon ion-ios-minus-outline" ng-click="flag.showDelete=!flag.showDelete;flag.showReorder=false;"></a> <h1 class="title">成員按鈕</h1> <a class="button" ng-click="flag.showReorder=!flag.showReorder;flag.showDelete=false;">從新排序</a> </ion-header-bar> <ion-list can-swipe="true" show-delete="flag.showDelete" show-reorder="flag.showReorder"> <ion-item ng-repeat="item in items"> {{item}} <ion-option-button class="button-calm icon ion-edit"></ion-option-button> <ion-option-button class="button-energized icon ion-share"></ion-option-button> <ion-delete-button class="ion-minus-circled" ng-click="delete_item(item)"></ion-delete-button> item爲傳入對象 <ion-reorder-button class="ion-navicon" on-reorder="move_item(item,$fromIndex,$toIndex)"></ion-reorder-button> </ion-item> </ion-list> <script> angular.module("myApp",["ionic"]) .controller("myCtrl",function($scope){ $scope.flag={showDelete:false,showReorder:false}; $scope.items=["Chinese","English","German","Italian","Janapese","Sweden","Koeran","Russian","French"]; $scope.delete_item=function(item){ var idx = $scope.items.indexOf(item); $scope.items.splice(idx,1); }; $scope.move_item = function(item, fromIndex, toIndex) { $scope.items.splice(fromIndex, 1); $scope.items.splice(toIndex, 0, item); }; $scope.close = function(){ $ionicListDelegate.closeOptionButtons(); }; }); 1). ion-list ion-item show-delete - 是否顯示成員內的delete按鈕 show-reorder - 是否顯示成員內的reorder按鈕 can-swipe - 是否支持滑動方式顯示成員option按鈕 2). ion-list ion-item 成員 ion-option-button - 選項按鈕 ng-click指令來掛接點擊事件監聽函數 var optionListener = function(item){...} ion-delete-button - 刪除按鈕 var deleteListener = function(item){...} ion-reorder-button - 重排按鈕 var reorderListener = function(item,$fromIndex,$toIndex){...} 3). collection-repeat : 高性能的ng-repeat <ion-list> <ion-item collection-repeat="item in items"> {{item}} <ion-option-button class="button-positive">...</ion-option-button> </ion-item> </ion-list> collection-repeat指令比ng-repeat更適用於大數據量 的列表數據,它只將處於可視區域的數據渲染到DOM上。 collection-repeat指令接受一個枚舉表達式,同時能夠附加如下的屬性: item-width - 可選。聲明重複元素的寬度 item-height - 可選。聲明重複元素的高度 item-render-buffer - 可選。須要載入渲染緩衝區的可視數據先後的數量。默認爲3 force-refresh-images - 可選。滾動時是否強制刷新圖像。容許值:true | false 4). 腳本接口 : $ionicListDelegate showReorder([showReorder]) - 顯示/關閉排序按鈕 showReorder的容許值爲:true | false。可使用一個做用域上的表達式 showDelete([showDelete]) - 顯示/關閉刪除按鈕 showDelete的容許值爲: true | false。可使用一個做用域上的表達式 canSwipeItems([canSwipeItems]) - 是否容許經過滑動方式來顯示成員選項按鈕 canSwipeItems的容許值爲:true | false。可使用一個做用域上的表達式 closeOptionButtons() - 關閉全部選項按鈕 1.4.5. ionic 選項卡欄操做 1.4.5.1. ion-tabs簡介,設置,標題文字、圖標和徽章顯示隱藏 <ion-tabs class="tabs-positive tabs-striped"> tabs-top tabs-dark tabs-icon-only位置和條帶風格 <ion-tab title="tab1"> <ion-view> …… </ion-tab> //圖標 icon-on和icon-off - 選中未選中狀態圖標 微章內容及樣式 <ion-tab title=" tab2" icon-on="ion-ios-clock" icon-off="ion-ios-clock-outline" badge="12" badge-style="badge-assertive"> <ion-nav-view name="tab-tab2"></ion-nav-view> 在name 放tab-tab2 </ion-tab> <ion-tab title="tab3" disabled="true"> // disabled - 禁止,hidden - 隱藏 <ion-view> <ion-content class="energized-bg"> tab 3 content </ion-content> </ion-view> </ion-tab> </ion-tabs> 1.4.5.2. ion-tabs 事件和 $ionicTabsDelegate 事件:on-select ,on-deselect ,ng-click $ionicTabsDelegate服務:select(index),selectedIndex() <ion-tab title="tab3" on-select="on_select(3)"> <ion-view> <ion-content class="energized-bg"> tab 3 content </ion-content> </ion-view> </ion-tab> <script> angular.module("ezApp",["ionic"]) .controller("ezCtrl",function($scope){ $scope.title="ion-tab : events"; $scope.on_select = function(idx){ $scope.title = ["ion-tab ",idx," selected!"].join(""); } }) .controller("ezCtrl",function($scope,$ionicTabsDelegate,$interval){ var idx=0; $interval(function(){ // interval 定時刷新 idx = (idx + 1) % 3; console.log(idx); $ionicTabsDelegate.select(idx); // select(index) - 選中指定的選項頁 },2000); }); </script> 1.4.5.3. ion-tabs路由詳解 ionic中結合tab狀態嵌套 app.config(function($stateProvider,$urlRouterProvider) { $stateProvider .state('tab', { url: "/tab", abstract:true, templateUrl: "tabs.html" }) .state('tab.tab1', { 1).使用「點標記法」 url: '/tab1', views:{ 'tab-tab1':{ templateUrl: "tab-tab1.html", controller:'tab1Controller' } } }) .state('tab2', { parent: 'tab', 2).使用parent屬性,指定一個父狀態的名稱字符串 url: '/tab2', views:{ 'tab-tab2':{ templateUrl: "tab-tab2.html", controller:'tab2Controller' } } }) .state(tab.tab3, { url: '/tab3', views:{ 定義ion-nav-view而且加上name屬性<ion-nav-view name="tab-tab2"></ion-nav-view> 'tab-tab3':{ 定義view 並對應 ion-nav-view 中的name屬性 templateUrl: "tab-tab3.html", controller:'tab3Controller' } } }) $urlRouterProvider.otherwise('/tab/tab1'); }) 3).使用parent屬性,指定一個父狀態對象 var contacts = { name: 'contacts', templateUrl: 'contacts.html' } var contactsList = { name: 'list', parent: contacts, //mandatory templateUrl: 'contacts.list.html' } states 抽象狀態abstract 一個抽象的狀態能夠有子狀態但不能顯式激活,它將被隱性激活當其子狀態被激活時。 兩個最經常使用的抽象狀態的示例: •爲全部子狀態預提供一個基url •在父狀態中設置template屬性,子狀態對應的模板將插入到父狀態模板中的ui-view(s)中 <!--主頁面導航框架:導航欄和回退按鈕,導航視圖--> <ion-nav-bar class="bar-positive"> <ion-nav-back-button></ion-nav-back-button> </ion-nav-bar><!-- --> <ion-nav-view></ion-nav-view> <!--導航頁面 --> <script id="tabs.html" type="text/ng-template"> <ion-header-bar class="bar-positive"> <h1 class="title"> ion-tabs</h1> </ion-header-bar> <ion-tabs class="tabs-icon-top tabs-positive"> <ion-tab title="tab1" icon-off="ion-ios-pulse" icon-on="ion-ios-pulse-strong" href="#/tab/tab1"> <ion-nav-view name="tab-tab1"></ion-nav-view> </ion-tab> <ion-tab title="tab2" icon-off="ion-ios-chatboxes-outline" icon-on="ion-ios-chatboxes" badge="12" badge-style="badge-assertive" href="#/tab/tab2"> <ion-nav-view name="tab-tab2"></ion-nav-view> </ion-tab> <ion-tab title="tab3" icon-off="ion-ios-gear-outline" icon-on="ion-ios-gear" href="#/tab/tab3"> <ion-nav-view name="tab-tab3"></ion-nav-view> </ion-tab> <ion-tab title="Home1" icon-on="ion-ios-filing" icon-off="ion-ios-filing-outline"> <ion-view> <ion-header-bar class="bar-positive"> 爲何不起做用? <h1 class="title">home tab</h1> </ion-header-bar> <ion-content> <p>home content</p> </ion-content> </ion-view> </ion-tab> </ion-tabs> </script> <!—應用頁面 --> <script id="tab-tab1.html" type="text/ng-template"> 應用頁面放在ion-view 裏遵循它的特色,title 和buttons放在 <ion-view view-title="Tab1"> <ion-nav-buttons side="right"> <button class="button" ng-click="doSomething()"> register </button> </ion-nav-buttons> <ion-content> Tab1 {{title}} <!—三級頁面 --> <a class="button" href="#/tab/content1/10">跳轉到內容</a> <a class="button" href="#/news">news跳轉到內容</a> </ion-content> </ion-view> </script> <script> var app = angular.module('myApp', ['ionic']); app.config(function($stateProvider,$urlRouterProvider) { $stateProvider .state('tab', { url: "/tab", abstract:true, templateUrl: "tabs.html" }) .state('tab.tab1', { url: '/tab1', views:{ 'tab-tab1':{ templateUrl: "tab-tab1.html", controller:'tab1Controller' } } }) .state('tab2', { parent: 'tab', url: '/tab2', views:{ 'tab-tab2':{ templateUrl: "tab-tab2.html", controller:'tab2Controller' } } }) .state('tab.content1', { tab.content1狀態的頁面放在ion-nav-view的name屬性爲tab-tab1 裏 url: '/content1/:id', views:{ 'tab-tab1':{ templateUrl: "tab-content1.html", controller:'content1Controller' } } }) .state('news', { 只能放在最外面的ion-nav-view裏 url: '/news', templateUrl: "news.html" }) $urlRouterProvider.otherwise('/tab/tab1'); }) .controller('tab2Controller', function($scope) { $scope.title='tab2Controller'; }) .controller('content1Controller', function($scope,$stateParams) { $scope.title='content1Controller'; console.log($stateParams); }); </script> 1.4.6. 側邊欄ion-side-menus <body ng-app="ionic" > <ion-side-menus> 側邊欄菜單 <ion-side-menu-content drag-content="true" edge-drag-threshold=50 class="calm-bg"> 主區域容器 <ion-header-bar class="bar-dark"> <!--切換左側欄顯示狀態--> <a menu-toggle="left" class="button icon ion-navicon"></a> <h1 class="title">ion-side-menu-content</h1> </ion-header-bar> <ion-content class="positive-bg"> menu-close指令關閉側欄內容 <a menu-close="" class="button icon ion-navicon"></a> </ion-content> </ion-side-menu-content> 側邊欄區域容器 <ion-side-menu side="left" width="150" expose-aside-when="(min-width:300px) " class="balanced-bg"> 左側區域 </ion-side-menu> <ion-side-menu side="right" width="150" class="dark-bg"> 右側區域 </ion-side-menu> </ion-side-menus> </body> 1).側邊欄菜單 : ion-side-menus 2).側邊欄打開關閉 切換指令 : menu-toggle/menu-close 3).主區域容器ion-side-menu-content 屬性設置 drag-content - 是否容許拖動內容打開側欄菜單 edge-drag-threshold -啓用邊距檢測,正數,當拖動發生在距離邊界小於這個數,觸發側欄顯示。爲true時,使用默認的25px做爲邊距閾值。爲false或0,則意味着禁止邊距檢測,可在內容區域的任何地方拖動來打開側欄 4).側邊欄區域容器 : ion-side-menu width - 側邊欄的寬度 width屬性是可選的,表示以像素爲單位的側欄菜單寬度。默認爲275px is-enabled - 是否可用 expose-aside-when - 側邊欄自動顯示條件表達式 默認狀況下,側邊欄是隱藏的,須要用戶向左或向右拖動內容,或者經過一個切換按鈕來打開。 可是在有些場景下(好比,橫放的平板)屏幕寬度足夠大,這時,自動地顯示側邊欄內容會更 合理。 expose-aside-when屬性就是處理這種狀況的,和CSS3的@meida相似,expose-aside-when須要 一個CSS表達式,例如:expose-aside-when="(min-width:500px)",這意味着當屏幕寬度大於 500px時將自動顯示側欄菜單。 ionic爲expose-aside-when提供了一個快捷選項:large , 這等同於 (min-width:768px)。 5).腳本中控制側邊欄菜單接口 : $ionicSideMenuDelegate <ion-header-bar class="bar-positive"> <a class="button" ng-click="toggle1();">切換</a> </ion-header-bar> <script> angular.module("myApp",["ionic"]) .controller("myCtrl",function($scope,$ionicSideMenuDelegate){ $scope.toggle1 = function(){ $ionicSideMenuDelegate.toggleLeft(); }; }); </script> getOpenRatio() - 側欄菜單打開的寬度佔其總寬度比例 canDragContent([canDrag]) - 是否容許拖拽內容以打開側欄菜單 edgeDragThreshold(value) - 設置邊框距離閾值 6).ion-tap結合 ion-side-menus一塊兒使用 <ion-side-menus> <ion-side-menu-content class="calm-bg"> <ion-nav-bar class="bar-positive"> <ion-nav-back-button> </ion-nav-back-button> </ion-nav-bar> <ion-tabs class="tabs-icon-top tabs-positive"> <!-- Dashboard Tab --> <ion-tab title="tab1" icon-off="ion-ios-pulse" icon-on="ion-ios-pulse-strong" href="#/tab/tab1"> <ion-nav-view name="tab-tab1"></ion-nav-view> </ion-tab> <!-- Chats Tab --> <ion-tab title="tab2" icon-off="ion-ios-chatboxes-outline" icon-on="ion-ios-chatboxes" href="#/tab/tab2"> <ion-nav-view name="tab-tab2"></ion-nav-view> </ion-tab> <!-- Account Tab --> <ion-tab title="tab3" icon-off="ion-ios-gear-outline" icon-on="ion-ios-gear" href="#/tab/tab3"> <ion-nav-view name="tab-tab3"></ion-nav-view> </ion-tab> </ion-tabs> </ion-side-menu-content> <ion-side-menu side="left" width="150" class="balanced-bg"> 左側區域 </ion-side-menu> <ion-side-menu side="right" width="150" class="dark-bg"> 右側區域 </ion-side-menu> </ion-side-menus> 1.4.7. 幻燈指令 ion-slide-box 1.4.7.1. 幻燈片 : ion-slide-box指令介紹 1.4.7.2. ion-slide-box : 屬性設置定製播放行爲 1.4.7.3. ion-slide-box : 事件及變量 1.4.7.4. 腳本接口: $ionicSlideBoxDelegate <ion-slide-box on-slide-changed="slideChanged(index)"> <ion-slide> <h3>Thank you for choosing the Awesome App!</h3> <div id="logo"><img src="http://code.ionicframework.com/assets/img/app_icon.png"></div> <p> We've worked super hard to make you happy.</p> <p> But if you are angry, too bad. </p> </ion-slide> <ion-slide> <h3>Using Awesome</h3> <div id="list"> <h5>Just three steps:</h5> <ol> <li>Be awesome</li> <li>Stay awesome</li> <li>There is no step 3</li> </ol> </div> </ion-slide> <ion-slide> <h3>Any questions?</h3> <p> Too bad! </p> </ion-slide> <ion-slide> <h3>Any questions?</h3> <p> 這是第四個 </p> </ion-slide> </ion-slide-box> 1.5. ionic指令複雜佈局 1.5.1. ion-scroll滾動框 <ion-scroll class="has-header" zooming="true" direction="xy" style="width: 500px; height: 500px"> <div style="width: 5000px; height: 5000px; background: url('img/map.jpg') repeat"></div> </ion-scroll> 5. 滾動框 : ion-scroll 1.5.2. 下拉更新數據 : ion-refresher <body ng-controller="firstCtrl"> <ion-content class="has-header"> <ion-refresher pulling-text="Pull to refresh..." on-refresh="doRefresh()" spinner="android"></ion-refresher> <ul class="list"> <li class="item" ng-repeat="item in items">{{item}}</li> </ul> </ion-content> <script> angular.module("myApp",["ionic"]) .controller("firstCtrl",function($scope){ //$scope.items=[]; //for(var i=0;i<50;i++) // $scope.items.push(["this is line ",i].join("")); $scope.items = ['item1','item2','item3']; var base = 1; $scope.doRefresh = function() { for(var i=0;i<10;i++,base++) $scope.items.unshift(["item ",base].join("")); $scope.$broadcast("scroll.refreshComplete"); // Stop the ion-refresher from spinning }; }); </script> </body> 1.5.3. 上拉更新數據 : ion-infinite-scroll <body ng-controller="firstCtrl"> <ion-content class="has-header"> <ion-infinite-scroll on-infinite="load_more();" icon="ion-load-a" distance="1%" immediate-check="true"></ion-infinite-scroll> <ul class="list"> <li class="item" ng-repeat="item in items">{{item}}</li> </ul> </ion-content> <script> angular.module("myApp",["ionic"]) .controller("firstCtrl",function($scope,$timeout){ $scope.items = ['1111','22222']; var base = 0; $scope.load_more = function(){ $timeout(function(){ for(var i=0;i<3;i++,base++) $scope.items.push(["item ",base].join("")); $scope.$broadcast("scroll.infiniteScrollComplete"); },500); }; }); </script> 1.5.4. 腳本接口 : $ionicScrollDelegate <ion-footer-bar class="bar-positive"> <a class="button" ng-click="gotop();">GO TOP!</a> <a class="button" ng-click="gobottom();">GO BOTTOM!</a> <a class="button" ng-click="getScrollPosition();">ScrollPosition</a> </ion-footer-bar> </body> </html> <script> angular.module("myApp",["ionic"]) .controller("firstCtrl",["$scope","$ionicScrollDelegate",function($scope,$ionicScollDelegate){ $scope.items = []; for(var i=0;i<100;i++) $scope.items.push(["item ",i+1].join("")); $scope.gotop = function(){ $ionicScollDelegate.scrollTop(true); } $scope.gobottom = function(){ $ionicScollDelegate.scrollBottom(true); } $scope.getScrollPosition = function(){ console.log($ionicScollDelegate.getScrollPosition()); } }]); </script> 1.5.5. 百度地圖 <head> <meta charset="UTF-8"> <meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no,width=device-width,height=device-height"> <link rel="stylesheet" type="text/css" href="http://code.ionicframework.com/1.2.4/css/ionic.css"> <script src="lib/ionic/js/ionic.bundle.min.js"></script> <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=0KzDtnrAVfdyBds7BV55rfzZ"></script> <style type="text/css"> body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微軟雅黑";} </style> </head> <body ng-controller="firstCtrl"> <ion-content scroll="false" class="has-header"> <div id="allmap"></div> </ion-content> <script> angular.module("myApp",["ionic"]) .controller("firstCtrl",function($scope){ // 百度地圖API功能 var map = new BMap.Map("allmap"); // 建立Map實例 map.centerAndZoom(new BMap.Point(116.404, 39.915), 11); // 初始化地圖,設置中心點座標和地圖級別 map.addControl(new BMap.MapTypeControl()); //添加地圖類型控件 map.setCurrentCity("北京"); // 設置地圖顯示的城市 此項是必須設置的 map.enableScrollWheelZoom(true); //開啓鼠標滾輪縮放 }); </script> </body>