引用

  1. <!--1.引入 ionic css和js-->
  2. <!--2.定义ng-app-->
  3. <!--3.定义 angular.module('myAPp',['ionic']); 要依赖注入ionic-->
  4. <!--4.定义controller 和我们以前的angularjs一样去使用-->

指令

1. collection-repeat

是一个允许你渲染数千项列表,并且性能几乎不会减弱的指令。collection-repeat处理的数据必须是一个数组。

  1. <ion-list>
  2. <ion-item collection-repeat="item in items">
  3. {{item}}
  4. </ion-item>
  5. </ion-list>

2. ion-option-button  滑动显示按钮

隶属于ionItem

  1. <ion-content>
  2. <ion-list>
  3. <ion-item ng-repeat="item in items" class="item-button-right">
  4. {{item}}
  5. <ion-option-button class="button-calm icon ion-edit"></ion-option-button>
  6. <ion-option-button class="button-energized icon ion-share"></ion-option-button>
  7. </ion-item>
  8. </ion-list>
  9. </ion-content>

效果图:滑动出现如下按钮

3. ion-delete-buttonion-reorder-button

  1. <ion-list show-delete="flag.showDelete" show-reorder="flag.showReorder">
  2. <ion-item ng-repeat="item in items">
  3. {{item}}!
  4. <ion-delete-button class="ion-minus-circled" ng-click="delete_item(item)"></ion-delete-button>
  5. <ion-reorder-button class="ion-navicon" on-reorder="move_item(item,$fromIndex,$toIndex)"></ion-reorder-button>
  6. </ion-item>
  7. </ion-list>

删除:

  1. $scope.delete_item=function(item){
  2. var idx = $scope.items.indexOf(item);
  3. // var idx = this.$index; 两种获取下标的方法
  4. $scope.items.splice(idx,1);
  5. };

Key:下标   item:值      可以通过传key,或者是传$index来获取下标

  1. <ion-item ng-repeat="(key,item) in items">
  2. {{$index}}---{{key}}--- {{item}}
  3. <ion-delete-button class="ion-minus-circled" ng-click="deleteItem(key)"></ion-delete-button>
  4. </ion-item>
  1. $scope.deleteItem=function(index){
  2. $scope.items.splice(index,1);
  3. }

排序:

  1. $scope.move_item = function(item, fromIndex, toIndex) {
  2. $scope.items.splice(fromIndex, 1);
  3. $scope.items.splice(toIndex, 0, item);
  4.  
  5. console.log(fromIndex);
  6. console.log(toIndex);
  7. console.log(item);
  8. };

4. ion-slide-box

  1. <ion-slide-box delegate-handle="slideBox" auto-play="true" does-continue="true" show-pager="true">
  2. <ion-slide ng-repeat="imgs in data">
  3. <img src="{{imgs.img}}" alt="">
  4. </ion-slide>
  5. </ion-slide-box>

注入服务:$ionicSlideBoxDelegate

 $ionicSlideBoxDelegate.update();   /*注意异步请求的时候 更新 slide框*/

$ionicSlideBoxDelegate.$getByHandle("slideBox").loop(true);    循环后台数据的时候不连续滚动的解决办法,前提是标签里要写上delegate-handle="slideBox"

does-continue :是否循环切换

auto-play :  是否自动播放

slide-interval : 自动播放的间隔时间,默认为4000ms
show-pager :  是否显示分页器

pager-click - 分页器点击事件
pager-click属性应当设置为一个当前作用域上的函数调用表达式,这个函数将被 传入被点击的分页按钮对应的幻灯页序号:index

  1. $scope.click=function (index) {
  2. $ionicSlideBoxDelegate.slide(index); /*$ionicSlideBoxDelegate.slide()跳转到指定的索引值*/
  3. }

on-slide-changed - 幻灯页切换事件
on-slide-changed属性应当设置为一个当前作用域上的函数调用表达式,这个函数 将被传入当前幻灯页的序号:index

active-slide - 当前幻灯页索引
active-slide属性应当设置为一个当前作用域上的变量,当幻灯片切换时,这个变量同步的反应当前的幻灯页索引号

5. ion-checkbox

  1. <ion-checkbox ng-repeat="item in list" ng-model="item.checked">
  2. {{item.name}}
  3. </ion-checkbox>

设置默认选中时,只需把当前的checked的值设置为true即可,checked:true

6. ion-radio

  1. <ion-radio ng-repeat="item in items" ng-model="sel.val" ng-value="item.text" class="item-thumbnail-left">
  2. <img src="{{item.pic}}" />
  3. {{item.text}}
  4. </ion-radio>
  1. $scope.items=[
  2. {'text':'支付宝',pic:'01.png'},
  3. {'text':'微信',pic:'02.png'}
  4. ];
  5. $scope.sel = {val:"微信"};

当ng-value的值等于ng-model的值得时候,默认被选中。

7. ion-toggle

  1. <!--toggle-class="toggle-positive" 改颜色值-->
  2. <ion-toggle ng-repeat="item in items" ng-model="item.selected" toggle-class="toggle-positive">
  3. {{item.text}}
  4. </ion-toggle>
  5.  
  6. $scope.items=[
  7. {text:"HTML5"},
  8. {text:"php",selected:true},
  9. {text:"CSS3",selected:true}
  10. ];

8. ion-spinner

  1. <ion-list>
  2. <ion-item ng-repeat="item in items" >
  3. <ion-spinner icon="{{item}}"></ion-spinner>
  4. </ion-item>
  5. </ion-list>
  6.  
  7. $scope.items = ["android","ios","ios-small","bubbles","circles",
  8. "crescent","dots","lines","ripples","spiral"];

9. $ionicModal 模态对话框

1.新建一个html模板页面  里面的所有东西放在  ion-modal-view
   2.$ionicModal依赖注入 controller
   3.定义
   $ionicModal.fromTemplateUrl("my-modal.html",{
      scope:$scope
   }).then(function(model){
      $scope.modal=model;
   })  

  1. angular.module("myApp", ["ionic"])
  2. .controller("myCtrl", function($scope, $ionicModal) {
  3. $scope.name='1243';
  4. /*定义*/
  5. $ionicModal.fromTemplateUrl("my-modal.html",{ /*模板的路径*/
  6. scope:$scope /* 把我们当前作用域的值传入模板*/
  7. }).then(function(model){
  8. $scope.modal=model; /* 给返回的 model赋值*/
  9. })
  10. $scope.openModal = function() {
  11. $scope.modal.show(); /*显示*/
  12. };
  13. $scope.closeModal = function() {
  14. $scope.modal.hide(); /*隐藏*/
  15. };
  16. $scope.removeModal = function() {
  17. $scope.modal.remove(); /*移除*/
  18. };
  19. $scope.user={
  20.  
  21. username:'',
  22. password:''
  23. }
  24. $scope.login=function(){
  25. console.log($scope.user);
  26. $scope.modal.hide();
  27. }
  28.  
  29. });

10. $ionicActionSheet

//在controller里注入$ionicActionSheet

  1. controller("myCtrl",function($scope, $ionicActionSheet, $timeout)

显示

  1. $scope.show = function() {
  2. // Show the action sheet
  3. $ionicActionSheet.show({
  4. titleText: "操作当前文章",// titleText - 上拉菜单的标题文本
  5.  
  6. // buttons - 自定义按钮数组。每个按钮需要一个描述对象,其text字段用于按钮显示
  7. buttons: [
  8. { text: "<b>分享</b>文章" },
  9. { text: "移动到..." },
  10. { text: "收藏..." }
  11. ],
  12.  
  13. // buttonClicked - 自定义按钮的回调函数,当用户点击时触发
  14. buttonClicked: function(index) {
  15. console.log('操作了第'+index+'个文章');
  16. return true;
  17. },
  18. cancelText: "取消",
  19.  
  20. // cancel - 取消按钮回调函数,当用户点击时触发
  21. cancel: function() {
  22. // add cancel code..
  23. console.log('执行了取消操作');
  24. return true;
  25. },
  26. // destructiveText - 危险选项按钮的文本。如果不设置此字段,则上拉菜单中不出现危险选项按钮
  27. destructiveText: "删除",
  28.  
  29. // destructiveButtonClicked - 危险选项按钮的回调函数,当用户点击时触发
  30. destructiveButtonClicked:function(){
  31. console.log('执行了删除操作');
  32. return true;
  33. }
  34. });
  35.  
  36. // For example's sake, hide the sheet after two seconds
  37. // $timeout(function() {
  38. // hideSheet();
  39. // }, 2000);
  40. // cancelOnStateChange - 当切换到新的视图时是否关闭此上拉菜单。默认为true
  41. // cssClass - 附加的CSS样式类名称
  42.  
  43. };

11.$ionicLoading  弹框显示并自动隐藏

需要在ccontroller里注入$ionicLoading

触发显示默认1s后自动隐藏

  1. $scope.load = function() {
  2. //显示载入指示器
  3. $ionicLoading.show({
  4. template: "正在载入数据,请稍后...{{name}}",
  5. noBackdrop:false,
  6. // duration:20000,
  7. scope:$scope
  8. });
  9. $timeout(function(){
  10. $ionicLoading.hide();
  11. $scope.show=true;
  12. },2000);
  13.  
  14. // template - 模板字符串
  15. // templateUrl - 内联模板的Url
  16. // scope - 要绑定的作用域对象
  17. // noBackdrop - 是否隐藏背景幕,遮罩层;true为不显示
  18. // hideOnStateChange - 当切换到新的视图时,是否隐藏载入指示器
  19. // delay - 显示载入指示器之前要延迟的时间,以毫秒为单位,默认为0,即不延迟
  20. // duration - 载入指示器持续时间,以毫秒为单位。时间到后载入指示器自 动隐藏。默认情况下, 载入指示器保持显示状态,知道显示的调用hide()方法

12.$ionicBackdrop 背景锁屏

需要在ccontroller里注入$ionicBackdrop

$ionicBackdrop.retain();   显示背景

$ionicBackdrop.release();   释放背景

13. list-inset

ion-item标签里添加class="list-inset"   列表不全屏显示,相当于上下左右有padding的效果;

14. tabs-item-hide、页面加载事件

class="tabs-item-hide"  隐藏底部tabs切换菜单

  1. <ion-tabs class="tabs-calm tabs-color-light tabs-icon-top {{hideTab}}"> </ion-tabs>
  2.  
  3. angular.module("appController",[])
  4. .controller("newsController",function($scope,$rootScope){
  5. /*页面加载前触发发的方法*/
  6. $scope.$on('$ionicView.beforeEnter', function() {
  7. $rootScope.hideTab='';
  8. });
  9. /*页面加载完成触发发的方法*/
  10. $scope.$on('$ionicView.afterEnter', function() {
  11.  
  12. }, false);
  13. })
  14. .controller("listDatailController",function ($scope,$rootScope){
  15. /*页面加载前触发发的方法*/
  16. $scope.$on('$ionicView.beforeEnter', function() {
  17. $rootScope.hideTab='tabs-item-hide';
  18. });
  19. // /*销毁事件 在二级页面 可以触发,效果有延迟*/
  20. // $scope.$on('$destroy',function(){
  21. // $rootScope.hideTab='';
  22. // })
  23. })

15. $ionicPopover  下拉菜单弹出框

  1. <ion-header-bar class="bar-positive">
  2. <a class="button" ng-click="openPopover($event);">ShowPopover</a>
  3. <h1 class="title">$ionicPopover</h1>
  4.  
  5. </ion-header-bar>
  6. <ion-content direction="xy">
  7. $ionicPopover
  8. </ion-content>
  9.  
  10. <script id="ez-popover.html" type="text/ng-template">
  11. <ion-popover-view class="calm-bg light padding pop-style" style="top:0px; right: 0px;">
  12.  
  13. <div class="XXX">
  14. <p ng-click="closePopover()">这里是自定义的一些信息</p>
  15. </div>
  16.  
  17. </ion-popover-view>
  18. </script>
  1. angular.module("myApp", ["ionic"])
  2. .controller("myCtrl", function($scope, $ionicPopover) {
  3.  
  4. $ionicPopover.fromTemplateUrl("ez-popover.html", {
  5. scope: $scope
  6. })
  7. .then(function(popover){
  8. $scope.popover = popover;
  9. })
  10.  
  11. //$event
  12. $scope.openPopover = function($event) {
  13.  
  14. console.log($event);
  15.  
  16. $scope.popover.show($event);
  17. };
  18. $scope.closePopover = function() {
  19. $scope.popover.hide();
  20. };
  21. //销毁事件回调处理:清理popover对象
  22. $scope.$on("$destroy", function() {
  23. $scope.popover.remove();
  24. });
  25. // 隐藏事件回调处理
  26. $scope.$on("popover.hidden", function() {
  27. // Execute action
  28.  
  29. });
  30. //删除事件回调处理
  31. $scope.$on("popover.removed", function() {
  32. // Execute action
  33. });
  34. });

16.  屏幕弹出框

  1. <a class="button button-block button-calm" ng-click="showPopup();">定制弹出框/popup</a>
  2. <a class="button button-block button-calm" ng-click="showConfirm();">确认框/confirm</a>
  3. <a class="button button-block button-calm" ng-click="showAlert();">警告框alert</a>
  4. <a class="button button-block button-calm" ng-click="showPrompt();">提示框/prompt</a>
  1. app.controller("myCtrl",function($scope, $ionicPopup, $timeout) {
  2. $scope.status = "";
  3. // 显示定制弹出框
  4. $scope.showPopup = function() {
  5. $scope.data = {}
  6. // 调用$ionicPopup弹出定制弹出框
  7. $ionicPopup.show({
  8. template: "<input type='password' ng-model='data.wifi'> <input type='text' ng-model='data.name'>",
  9. title: "请输入Wi-Fi密码",
  10. subTitle: "密码为8位",
  11. scope: $scope,
  12. buttons: [
  13. { text: "取消" },
  14. {
  15. text: "<b>保存</b>",
  16. type: "button-positive",
  17. onTap: function(e) {
  18. return $scope.data.wifi;
  19. }
  20. }
  21. ]
  22. })
  23. .then(function(res) {
  24. $scope.status = ["Wi-Fi密码到手了",":",res].join(" ");
  25. });
  26. };
  27. // 确认弹出框
  28. $scope.showConfirm = function() {
  29. $ionicPopup.confirm({
  30. title: "定制冰激凌",
  31. template: "你确定要吃我的冰淇淋吗?",
  32. okText:"OK"
  33. })
  34. .then(function(res) {
  35. if(res) {
  36. $scope.status = "凭什么吃我的冰淇淋!";
  37. } else {
  38. $scope.status = "谢谢你不吃之恩!";
  39. }
  40. });
  41. };
  42. //警告弹出框
  43. $scope.showAlert = function() {
  44. $ionicPopup.alert({
  45. title: "不要吃果冻",
  46. template: "它们可能是用旧的皮鞋帮做的!"
  47. })
  48. .then(function(res) {
  49. $scope.status = "感谢上帝,你没吃鞋帮哦!11";
  50. });
  51. };
  52. //输入提示框
  53. $scope.showPrompt = function(){
  54. //todo....
  55. $ionicPopup.prompt({
  56. title: "不要吃果冻",
  57. template: "它们可能是用旧的皮鞋帮做的!"
  58. })
  59. .then(function(res) {
  60. $scope.status = "感谢上帝,你没吃鞋帮哦!"+res;
  61. });
  62. }
  63. });

17.$scope.$on  广播

$emit只能向parent controller传递event与data( $emit(name, args) )
 $broadcast只能向child controller传递event与data( $broadcast(name, args) )
 $on用于接收event与data( $on(name, listener) )

加载前、加载后、销毁广播

  1. /*beforeEnter 加载前*/
  2. $scope.$on('$ionicView.beforeEnter', function() {
  3. $rootScope.hideTabs=''; /*底部菜单显示*/
  4. });
  5. /*afterEnter 数据加载完成*/
  6. $scope.$on('$ionicView.afterEnter', function() {
  7.  
  8. }, false);
  9.  
  10. /*$destroy 销毁的时候*/
  11. $scope.$on('$destroy',function(){
  12.  
  13. })

18.ion-side-menus 侧边栏

单独使用index结构:

  1. <ion-side-menus>
  2. <!-- 中间内容 -->
  3. <ion-side-menu-content class="positive-bg">
  4. <ion-header-bar>
  5.  
  6. <!--menu-toggle="left" 按钮上面加这个menu-toggle 可以切换-->
  7. <!--menu-close="" 关闭-->
  8. <a menu-close class="button icon ion-navicon"></a>
  9. <div class="title">
  10. 头部
  11. </div>
  12. <a menu-toggle="left" class="button icon ion-navicon"></a>
  13. </ion-header-bar>
  14. </ion-side-menu-content>
  15. <!-- 左侧菜单 样式一般写为内联样式,外部样式会出现边框模糊-->
  16. <ion-side-menu side="left" width="100"
  17.  
  18. class="dark-bg">
  19. </ion-side-menu>
  20. <!-- 右侧菜单 当视口宽度小于500px的时候隐藏侧边栏,否则默认显示-->
  21. <ion-side-menu side="right" class="dark-bg" expose-aside-when="(min-width:500px)">
  22. </ion-side-menu>
  23. </ion-side-menus>

配合tabs结构:

index.html代码:

  1. <ion-nav-view> </ion-nav-view>

tabs.html代码:

  1. <!--class tabs-item-hide 隐藏底部-->
  2. <ion-side-menus>
  3. <!-- 中间内容 -->
  4. <ion-side-menu-content class="positive-bg">
  5. <ion-nav-bar class="bar-positive"></ion-nav-bar>
  6. <ion-tabs ></ion-tabs>
  7. </ion-side-menu-content>
  8. <!-- 左侧菜单 -->
  9. <ion-side-menu side="left" class="dark-bg"></ion-side-menu>
  10. <!-- 右侧菜单 -->
  11. <ion-side-menu side="right" class="dark-bg"></ion-side-menu>
  12. </ion-side-menus>

ionic —指令的更多相关文章

  1. 160914、ionic指令简单布局

    1) 添加引用类库(ionic样式和ionic js文件) 2) 标题栏,页脚栏,内容区 3) Js引入ionic类库,添加页面操作方法和对象 4) 数据初始化 5) Html页面绑定方法和对象 &l ...

  2. Ionic学习笔记3_ionic指令简单布局

    1)   添加引用类库(ionic样式和ionic js文件) 2)   标题栏,页脚栏,内容区 3)   Js引入ionic类库,添加页面操作方法和对象 4)   数据初始化 5)   Html页面 ...

  3. MAC OSX环境下cordova+Ionic的安装配置

    一.简介 1.Ionic是什么 IONIC 是目前最有潜力的一款 HTML5 手机应用开发框架.通过 SASS 构建应用程序,它提供了很多 UI 组件来帮助开发者开发强大的应用. 它使用 JavaSc ...

  4. Ionic Android开发环境搭建 上

    首先,需要下载并安装Node.js. 什么是Node.js?百科上说:Node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快.易于扩展的网络应用.Nod ...

  5. Web前端开发——Ionic 3.0【爱创课堂专业前端培训】

    前端开发——Ionic 3.0 一.Ionic 移动端有三种开发方向 源生APP开发, 移动端web开发 混合开发(介于以上两者之间的) 类微信小程序 reactNative,用react语法,开发a ...

  6. ionic2 安装(一)

    1.安装java JDK 2.安装nodejs 3.安装最新版ionic 指令:npm install ionic@latest 4.安装cordova 指令:npm install -g cordo ...

  7. ionic3.x脚手架(基于个人项目自用)

    ionic3项目开发脚手架(基于个人练习项目) 一.    基于ionic3的生产环境搭建 1.    配置安卓SDK: 安装jdk  --->  安装AndroidSDK (1)      安 ...

  8. angularjs 水平滚动选中按钮高亮显示 swiper和回到顶部指令的实现ionic

    首先安装 swiper npm install --save swiper 或者 bower install --save swiper <link rel="stylesheet&q ...

  9. 基于ionic框架封装一个图片轮播指令的几点

    在这里我想在项目中封装一个图片轮播的指令 (本项目使用的是ionic框架) 1)定义指令 define(['app'],function(myapp){ myapp.directive('myslid ...

随机推荐

  1. 采用prometheus 监控mysql

    1. prometheus 是什么 开源的系统监控和报警工具,监控项目的流量.内存量.负载量等实时数据. 它通过直接或短时jobs中介收集监控数据,在本地存储所有收集到的数据,并且通过定义好的rule ...

  2. ASP.NET Core 2.0中的Azure Blob存储

    问题 如何在ASP.NET Core中使用Azure Blob存储 解 创建一个类库并添加NuGet包 - WindowsAzure.Storage 添加一个类来封装设置, publicclass A ...

  3. SQL Full Join 的 Where条件

    SQL需求是损益视图串资产负债视图 用Excel透视表模拟出来的结果就是 用SQL查询如下: 当Where条件是左边的视图的时候 select 损益视图.年 ,损益视图.年月 ,损益视图.期间 ,损益 ...

  4. Redis学习笔记(6)——SpringDataRedis入门

    一.SpringDataRedis简介 Spring-data-redis是spring大家族的一部分,提供了在srping应用中通过简单的配置访问redis服务,对reids底层开发包(Jedis, ...

  5. MFRC522开发笔记

    一.了解基本概念 ①ISO-14443A协议:( 国际标准化组织:International Organization for Standardization)RFID协议的一种;   PICC:临近 ...

  6. Git的介绍和使用

    Git是目前世界上最先进的分布式版本控制系统 Git的安装 1.在linux上安装 你可以先输入git,看看系统是不是已经自带了git 或者 sudo apt-get install git  就可以 ...

  7. TortoiseGit学习系列之Windows上TortoiseGit的安装详解(图文)

    不多说,直接上干货! TortoiseGit的安装准备 首先你得安装windows下的msysgit. 安装版本控制器客户端TortoiseGit [不习惯英文的朋友,也可以下个语言包]. 下载地址: ...

  8. 大数据搭建各个子项目时配置文件技巧(适合CentOS和Ubuntu系统)(博主推荐)

    不多说,直接上干货! 很多同行,也许都知道,对于我们大数据搭建而言,目前主流,分为Apache 和 Cloudera 和 Ambari. 后两者我不多说,是公司必备和大多数高校科研环境所必须的! 分别 ...

  9. 对于SQL Server 2008删除或压缩数据库日志的方法

    由于数据库日志增长被设置为“无限制”,所以时间一长日志文件必然会很大,一个400M的数据库居然有4G的LOG文件,严重占用了磁盘空间.由于主要是做OLAP,所以数据库本身不会有大变动,所以日志也就没有 ...

  10. PHP之mb_convert_encoding使用

    mb_convert_encoding (PHP 4 >= 4.0.6, PHP 5, PHP 7) mb_convert_encoding - Convert character encodi ...