ionic —指令

时间:2022-09-03 21:08:36

引用

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

指令

1. collection-repeat

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

<ion-list>
<ion-item collection-repeat="item in items">
{{item}}
</ion-item>
</ion-list>

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

隶属于ionItem

<ion-content>
<ion-list>
<ion-item ng-repeat="item in items" class="item-button-right">
{{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-item>
</ion-list>
</ion-content>

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

ionic —指令

3. ion-delete-buttonion-reorder-button

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

删除:

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

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

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

排序:

$scope.move_item = function(item, fromIndex, toIndex) {
$scope.items.splice(fromIndex, 1);
$scope.items.splice(toIndex, 0, item); console.log(fromIndex);
console.log(toIndex);
console.log(item);
};

4. ion-slide-box

<ion-slide-box delegate-handle="slideBox" auto-play="true" does-continue="true" show-pager="true">
<ion-slide ng-repeat="imgs in data">
<img src="{{imgs.img}}" alt="">
</ion-slide>
</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

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

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

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

5. ion-checkbox

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

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

6. ion-radio

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

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

7. ion-toggle

<!--toggle-class="toggle-positive" 改颜色值-->
<ion-toggle ng-repeat="item in items" ng-model="item.selected" toggle-class="toggle-positive">
{{item.text}}
</ion-toggle> $scope.items=[
{text:"HTML5"},
{text:"php",selected:true},
{text:"CSS3",selected:true}
];

8. ion-spinner

<ion-list>
<ion-item ng-repeat="item in items" >
<ion-spinner icon="{{item}}"></ion-spinner>
</ion-item>
</ion-list> $scope.items = ["android","ios","ios-small","bubbles","circles",
"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;
   })  

angular.module("myApp", ["ionic"])
.controller("myCtrl", function($scope, $ionicModal) {
$scope.name='1243';
/*定义*/
$ionicModal.fromTemplateUrl("my-modal.html",{ /*模板的路径*/
scope:$scope /* 把我们当前作用域的值传入模板*/
}).then(function(model){
$scope.modal=model; /* 给返回的 model赋值*/
})
$scope.openModal = function() {
$scope.modal.show(); /*显示*/
};
$scope.closeModal = function() {
$scope.modal.hide(); /*隐藏*/
};
$scope.removeModal = function() {
$scope.modal.remove(); /*移除*/
};
$scope.user={ username:'',
password:''
}
$scope.login=function(){
console.log($scope.user);
$scope.modal.hide();
} });

10. $ionicActionSheet

//在controller里注入$ionicActionSheet

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

显示

    $scope.show = function() {
// Show the action sheet
$ionicActionSheet.show({
titleText: "操作当前文章",// titleText - 上拉菜单的标题文本 // buttons - 自定义按钮数组。每个按钮需要一个描述对象,其text字段用于按钮显示
buttons: [
{ text: "<b>分享</b>文章" },
{ text: "移动到..." },
{ text: "收藏..." }
], // buttonClicked - 自定义按钮的回调函数,当用户点击时触发
buttonClicked: function(index) {
console.log('操作了第'+index+'个文章');
return true;
},
cancelText: "取消", // cancel - 取消按钮回调函数,当用户点击时触发
cancel: function() {
// add cancel code..
console.log('执行了取消操作');
return true;
},
// destructiveText - 危险选项按钮的文本。如果不设置此字段,则上拉菜单中不出现危险选项按钮
destructiveText: "删除", // destructiveButtonClicked - 危险选项按钮的回调函数,当用户点击时触发
destructiveButtonClicked:function(){
console.log('执行了删除操作');
return true;
}
}); // For example's sake, hide the sheet after two seconds
// $timeout(function() {
// hideSheet();
// }, 2000);
// cancelOnStateChange - 当切换到新的视图时是否关闭此上拉菜单。默认为true
// cssClass - 附加的CSS样式类名称 };

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

需要在ccontroller里注入$ionicLoading

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

 $scope.load = function() {
//显示载入指示器
$ionicLoading.show({
template: "正在载入数据,请稍后...{{name}}",
noBackdrop:false,
// duration:20000,
scope:$scope
});
$timeout(function(){
$ionicLoading.hide();
$scope.show=true;
},2000); // template - 模板字符串
// templateUrl - 内联模板的Url
// scope - 要绑定的作用域对象
// noBackdrop - 是否隐藏背景幕,遮罩层;true为不显示
// hideOnStateChange - 当切换到新的视图时,是否隐藏载入指示器
// delay - 显示载入指示器之前要延迟的时间,以毫秒为单位,默认为0,即不延迟
// 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切换菜单

<ion-tabs class="tabs-calm tabs-color-light tabs-icon-top  {{hideTab}}">    </ion-tabs>

angular.module("appController",[])
.controller("newsController",function($scope,$rootScope){
/*页面加载前触发发的方法*/
$scope.$on('$ionicView.beforeEnter', function() {
$rootScope.hideTab='';
});
/*页面加载完成触发发的方法*/
$scope.$on('$ionicView.afterEnter', function() { }, false);
})
.controller("listDatailController",function ($scope,$rootScope){
/*页面加载前触发发的方法*/
$scope.$on('$ionicView.beforeEnter', function() {
$rootScope.hideTab='tabs-item-hide';
});
// /*销毁事件 在二级页面 可以触发,效果有延迟*/
// $scope.$on('$destroy',function(){
// $rootScope.hideTab='';
// })
})

15. $ionicPopover  下拉菜单弹出框

<ion-header-bar class="bar-positive">
<a class="button" ng-click="openPopover($event);">ShowPopover</a>
<h1 class="title">$ionicPopover</h1> </ion-header-bar>
<ion-content direction="xy">
$ionicPopover
</ion-content> <script id="ez-popover.html" type="text/ng-template">
<ion-popover-view class="calm-bg light padding pop-style" style="top:0px; right: 0px;"> <div class="XXX">
<p ng-click="closePopover()">这里是自定义的一些信息</p>
</div> </ion-popover-view>
</script>
angular.module("myApp", ["ionic"])
.controller("myCtrl", function($scope, $ionicPopover) { $ionicPopover.fromTemplateUrl("ez-popover.html", {
scope: $scope
})
.then(function(popover){
$scope.popover = popover;
}) //$event
$scope.openPopover = function($event) { console.log($event); $scope.popover.show($event);
};
$scope.closePopover = function() {
$scope.popover.hide();
};
//销毁事件回调处理:清理popover对象
$scope.$on("$destroy", function() {
$scope.popover.remove();
});
// 隐藏事件回调处理
$scope.$on("popover.hidden", function() {
// Execute action });
//删除事件回调处理
$scope.$on("popover.removed", function() {
// Execute action
});
});

16.  屏幕弹出框

<a class="button button-block button-calm" ng-click="showPopup();">定制弹出框/popup</a>
<a class="button button-block button-calm" ng-click="showConfirm();">确认框/confirm</a>
<a class="button button-block button-calm" ng-click="showAlert();">警告框alert</a>
<a class="button button-block button-calm" ng-click="showPrompt();">提示框/prompt</a>
app.controller("myCtrl",function($scope, $ionicPopup, $timeout) {
$scope.status = "";
// 显示定制弹出框
$scope.showPopup = function() {
$scope.data = {}
// 调用$ionicPopup弹出定制弹出框
$ionicPopup.show({
template: "<input type='password' ng-model='data.wifi'> <input type='text' ng-model='data.name'>",
title: "请输入Wi-Fi密码",
subTitle: "密码为8位",
scope: $scope,
buttons: [
{ text: "取消" },
{
text: "<b>保存</b>",
type: "button-positive",
onTap: function(e) {
return $scope.data.wifi;
}
}
]
})
.then(function(res) {
$scope.status = ["Wi-Fi密码到手了",":",res].join(" ");
});
};
// 确认弹出框
$scope.showConfirm = function() {
$ionicPopup.confirm({
title: "定制冰激凌",
template: "你确定要吃我的冰淇淋吗?",
okText:"OK"
})
.then(function(res) {
if(res) {
$scope.status = "凭什么吃我的冰淇淋!";
} else {
$scope.status = "谢谢你不吃之恩!";
}
});
};
//警告弹出框
$scope.showAlert = function() {
$ionicPopup.alert({
title: "不要吃果冻",
template: "它们可能是用旧的皮鞋帮做的!"
})
.then(function(res) {
$scope.status = "感谢上帝,你没吃鞋帮哦!11";
});
};
//输入提示框
$scope.showPrompt = function(){
//todo....
$ionicPopup.prompt({
title: "不要吃果冻",
template: "它们可能是用旧的皮鞋帮做的!"
})
.then(function(res) {
$scope.status = "感谢上帝,你没吃鞋帮哦!"+res;
});
}
});

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) )

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

/*beforeEnter  加载前*/
$scope.$on('$ionicView.beforeEnter', function() {
$rootScope.hideTabs=''; /*底部菜单显示*/
});
/*afterEnter 数据加载完成*/
$scope.$on('$ionicView.afterEnter', function() { }, false); /*$destroy 销毁的时候*/
$scope.$on('$destroy',function(){ })

18.ion-side-menus 侧边栏

单独使用index结构:

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

配合tabs结构:

index.html代码:

<ion-nav-view>    </ion-nav-view>

tabs.html代码:

<!--class  tabs-item-hide 隐藏底部-->
<ion-side-menus>
<!-- 中间内容 -->
<ion-side-menu-content class="positive-bg">
<ion-nav-bar class="bar-positive"></ion-nav-bar>
<ion-tabs ></ion-tabs>
</ion-side-menu-content>
<!-- 左侧菜单 -->
<ion-side-menu side="left" class="dark-bg"></ion-side-menu>
<!-- 右侧菜单 -->
<ion-side-menu side="right" class="dark-bg"></ion-side-menu>
</ion-side-menus>

ionic —指令的更多相关文章

  1. 160914、ionic指令简单布局

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

  2. Ionic学习笔记3&lowbar;ionic指令简单布局

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

  3. MAC OSX环境下cordova&plus;Ionic的安装配置

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

  4. Ionic Android开发环境搭建 上

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

  5. Web前端开发——Ionic 3&period;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&period;x脚手架&lpar;基于个人项目自用&rpar;

    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. JavaScript学习总结——我所理解的JavaScript闭包

    一.闭包(Closure) 1.1.什么是闭包? 理解闭包概念: a.闭包是指有权限访问另一个函数作用域的变量的函数,创建闭包的常见方式就是在一个函数内部创建另一个函数,也就是创建一个内部函数,创建一 ...

  2. 在本地windows机器上安装SecureCRT客户端

    一.SecureCRT客户端介绍. SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录UNIX或Linux服务器主机的软件. SecureCRT支持 ...

  3. linux下跳板机跟客户端之间无密码登陆

    创建证书: [root@lnmp src]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which ...

  4. CSS&lowbar;03&lowbar;01&lowbar;CSS选择器中单选择器:关联选择器档

    选择器中单选择器:关联选择器档 第01步:编写select.css @charset "utf-8"; /* span标签中的b标签的exam类 */ span b.exam{ b ...

  5. 初学HTML5系列一:简单介绍

    最近很闲,就想着学点东西,然后就瞄中了html5,以前只看过很简单的一些,这次是系统的学下,顺便也记录下.废话不多说,开始正题. 稍微介绍下html5,html5是W3C和WHATWG 合作的结果. ...

  6. struts2上传文件类型列表

    '.a'      : 'application/octet-stream',         '.ai'     : 'application/postscript',         '.aif' ...

  7. Codeforces 343E Pumping Stations

    Description 题面 题目大意:求一个排列 \(P\),使得 \(\sum_{i=1}^{n-1}maxflow(P_i,P_{i+1})\) 尽量大 Solution 构造出最小割树,那么第 ...

  8. Spring通过构造方法注入的四种方式

    通过构造方法注入,就相当于给构造方法的参数传值 set注入的缺点是无法清晰表达哪些属性是必须的,哪些是可选 的,构造注入的优势是通过构造强制依赖关系,不可能实例化不 完全的或无法使用的bean. Me ...

  9. 第五周 IP通信基础回顾

    广播请求,单播响应,ARP IPV4,IP地址32位二进制代码分为8个位一组 路由器每一个接口都是一个网段 ,网段与网段区分看网络地址 同一段链路是同网段 直接广播:主机号全为1 受限广播:全为1 特 ...

  10. windows 上安装冷门python模块

    最近在逼乎看到 笑虎大大 的python 撸代码学知识专栏..就下载他的Pspider 框架 安装了一下,准备耍耍. 由于是在Windows下的pycharm 有个 pybloom_live 模块 老 ...