AngularJS ionic手势事件的使用总结


Posted in Javascript onAugust 09, 2017

这两天学习了AngularJS手势事件感觉这个地方知识点挺多的,而且很重要,所以,今天添加一点小笔记。

长按 : on-hold

在屏幕同一位置按住超过500ms,将触发on-hold事件:

 你可以在任何元素上使用这个指令挂接监听函数:

<any on-hold=“…”>…</any>

示例代码:

<body ng-controller=”ezCtrl”>
<ion-header-bar class=”bar-positive” on-hold=”show_delete();”>
<h1 class=”title”>on-hold</h1>
</ion-header-bar>
<ion-content>
<ion-list ng-repeat=”item in items”>
<ion-item>
{{item}}
<ion-delete-button class=”ion-minus-circled”></ion-delete-button>
<ion-reorder-button class=”ion-navicon”></ion-reorder-button>
</ion-item>
</ion-list>
</ion-content>
<ion-footer-bar class=”bar-positive”></ion-footer-bar>
</body>

js:

angular.module(“ezApp”,[“ionic”])
.controller(“ezCtrl”,function($scope, $ionicListDelegate) {
$scope.items=[“China”,”Japan”,”India”,”Russian”];
$scope.show_delete = function(){
$ionicListDelegate.showDelete(true);
};
});

敲击 : on-tap

在屏幕上快速点击一次(停留时间不超过250ms),将触发on-tap事件:

可以在任何元素上使用这个指令挂接事件监听函数:

<any on-tap=“…”>…</any>

示例代码:

<head>
<meta name=”viewport” content=”initial-scale=1,maximum-scale=1,user-scalable=no,width=device-width,height=device-height”>
<script src=”ionic.bundle.min.js”></script>
<link rel=”stylesheet” type=”text/css” href=”ionic.min.css”>
</head>
<body ng-controller=”ezCtrl”>
<ion-header-bar class=”bar-positive”>
<h1 class=”title”>on-tap</h1>
</ion-header-bar>
<ion-content>
<ion-list ng-repeat=”item in items”>
<ion-item on-tap=”show(item);”>
{{item}}
<ion-reorder-button class=”ion-navicon”></ion-reorder-button>
</ion-item>
</ion-list>
</ion-content>
</body>

js:

angular.module(“ezApp”,[“ionic”])
.controller(“ezCtrl”,function($scope, $ionicPopup) {
$scope.items=[“England”,”Japan”,”India”,”Russian”];
$scope.show = function(item){
$ionicPopup.alert({
title : “警告!”,
template : “为什么要敲 “+ item + “?”
});
};
});

双击 : on-double-tap
在屏幕上快速敲击两次,将触发on-double-tap事件:

可以在任何元素上使用这个指令挂接事件监听函数:

<any on-double-tap=“…”>…</any>

示例代码:

<body ng-controller=”ezCtrl”>
<ion-header-bar class=”bar-positive” on-double-tap=”title='I am double tapped!'”>
<h1 class=”title”>{{title}}</h1>
</ion-header-bar>
<ion-content>
<p ng-include=”‘txt/xiyouji.txt'”></p>
</ion-content>
</body>

js:

angular.module(“ezApp”,[“ionic”])
.controller(“ezCtrl”,function($scope) {
$scope.title = “on-double-tap”;
});

按下/松开 on-touch/on-release

在屏幕上按下手指或鼠标键时,会立即触发on-touch事件;当手指抬起或鼠标键松开时, 会立即触发on-release事件。

可以在任何元素上挂接响应的事件监听函数:

<any on-touch=“…” on-release=“…”>…</any>

示例代码:

<body ng-controller=”ezCtrl”>
<ion-header-bar class=”bar-positive” ng-class=”[style]”
on-touch=”style='bar-assertive'” on-release=”style='bar-positive'”>
<h1 class=”title”>on-touche/on-release</h1>
</ion-header-bar>
<ion-content>
<img src=”img/0021.png”>
</ion-content>
</body>

js:

angular.module(“ezApp”,[“ionic”])
.controller(“ezCtrl”,function($scope) {
});

拖拽 : on-drag

在屏幕上按住并移动时,触发on-drag拖拽事件: 

根据运动方向的不同,可以细分为以下几种事件:

  • on-drag ? 向所有方向拖动时都触发此事件
  • on-drag-up ? 向上拖动时触发此事件
  • on-drag-down ? 向下拖动时触发此事件
  • on-drag-left ? 向左拖动时触发此事件
  • on-drag-right ? 向右拖动时触发此事件

可以在任意元素上使用这些指令挂接对应的事件监听函数:

<any on-drag=“…”>…</any>

示例代码:

<body ng-controller=”ezCtrl”>
<ion-header-bar class=”bar-positive”>
<h1 class=”title”>on-drag</h1>
</ion-header-bar>
<div class=”scroll-content has-header padding”>
<img src=”img/baymax.png” on-touch=”onTouch($event)” on-drag=”onDrag($event);”>
</div>
</body>

js:

angular.module(“ezApp”,[“ionic”])
.controller(“ezCtrl”,function($scope) {
var ox,oy;
$scope.onTouch = function($event){
ox = $event.target.offsetLeft;
oy = $event.target.offsetTop;
};
$scope.onDrag = function($event){
var el = $event.target,
dx = $event.gesture.deltaX,
dy = $event.gesture.deltaY;
el.style.left = ox + dx + “px”;
el.style.top = oy + dy + “px”;
};
});

划动 : on-swipe

在屏幕上按住并快速拖动时,将触发on-swipe划动事件:

根据划动方向的不同,可细分为以下指令:

  • on-swipe ? 向任何方向的划动都触发事件
  • on-swipe-up ? 向上划动时触发事件
  • on-swipe-down ? 向下划动时触发事件
  • on-swipe-left ? 向左划动时触发事件
  • on-swipe-right ? 向右划动时触发事件

可以在任何元素上使用这些指令挂接事件监听函数:

<any on-swipe=“…”>…</any>

示例代码:

<body ng-controller=”ezCtrl”>
<div class=”scroll-content padding”
on-swipe-up=”onSwipeUp()”
on-swipe-down=”onSwipeDown()”
on-swipe-left=”onSwipeLeft()”
on-swipe-right=”onSwipeRight()”>
<p class=”padding”>按住鼠标快速划!</p>
<i class=”icon {{icon}}”></i>
</div>
</body>

js:

angular.module(“ezApp”,[“ionic”])
.controller(“ezCtrl”,function($scope){
$scope.icon=”ion-arrow-expand”;
$scope.onSwipeUp = function(){
$scope.icon=”ion-arrow-up-a”;
};
$scope.onSwipeDown = function(){
$scope.icon=”ion-arrow-down-a”;
};
$scope.onSwipeLeft = function(){
$scope.icon=”ion-arrow-left-a”;
};
$scope.onSwipeRight = function(){
$scope.icon=”ion-arrow-right-a”;
};
});

脚本接口 : $ionicGesture

除了使用之前介绍的特定指令实现手势事件的监听,也可以使用$ionicGesture服务 注册/解除手势事件监听:

on(eventType,callback,$element,options) ? 注册手势事件监听函数

参数eventType是支持的事件类型,参看下面介绍;参数callback指定监听函数; 参数$element是要绑定事件的jqLite元素。

on()方法返回的是一个ionic.gesture对象,可供解除监听用。

off(gesture,eventType,callback) ? 解除手势事件监听函数

参数gesture是on()方法返回的结果对象,参数callback是要移除的监听函数。

$ionicGesture服务支持的事件类型有:

hold, tap, doubletap, drag, dragstart, dragend, dragup, dragdown, dragleft, dragright, swipe, swipeup, swipedown, swipeleft, swiperight, transform, transformstart, transformend, rotate, pinch, pinchin, pinchout, touch, release

示例代码:

<body ng-controller=”ezCtrl”>
<ion-header-bar class=”bar-positive”>
<h1 class=”title”>$ionicGesture</h1>
</ion-header-bar>
<ion-content class=”padding”>
<button class=”button” id=”test”>test</button>
</ion-content>
</body>

js:

angular.module(“ezApp”,[“ionic”])
.controller(“ezCtrl”,function($scope,$ionicGesture,$ionicPopup) {
var el = document.querySelector(“#test”);
$ionicGesture.on(“tap”,function(){
$ionicPopup.alert({
title : “提醒”,
template : “这个监听是用$ionicGesture服务注册的!”
})
},angular.element(el));
});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
在jQuery中 常用的选择器介绍
Apr 16 Javascript
JQuery使用$.ajax和checkbox实现下次不在通知功能
Apr 16 Javascript
jQuery表格插件datatables用法汇总
Mar 29 Javascript
JS上传组件FileUpload自定义模板的使用方法
May 10 Javascript
标准的js无缝滚动效果
Aug 30 Javascript
jquery 判断div show的状态实例
Dec 03 Javascript
ajax异步请求详解
Jan 06 Javascript
Vue2.0使用过程常见的一些问题总结学习
Apr 10 Javascript
node.js爬取中关村的在线电瓶车信息
Nov 13 Javascript
JavaScript实现邮箱后缀提示功能的示例代码
Dec 13 Javascript
vue调用本地摄像头实现拍照功能
Aug 14 Javascript
js中Map和Set的用法及区别实例详解
Feb 15 Javascript
Vue2.0实现将页面中表格数据导出excel的实例
Aug 09 #Javascript
webpack 1.x升级过程中的踩坑总结大全
Aug 09 #Javascript
微信小程序开发教程之增加mixin扩展
Aug 09 #Javascript
javascript编程开发中取色器及封装$函数用法示例
Aug 09 #Javascript
vuejs父子组件之间数据交互详解
Aug 09 #Javascript
Angular在模板驱动表单中自定义校验器的方法
Aug 09 #Javascript
浅谈react+es6+webpack的基础配置
Aug 09 #Javascript
You might like
推荐一篇入门级的Class文章
2007/03/19 PHP
PHP 之 写时复制介绍(Copy On Write)
2014/05/13 PHP
php计划任务之ignore_user_abort函数实现方法
2015/01/08 PHP
php实现网站顶踩功能的完整前端代码
2015/07/19 PHP
php使用Jpgraph创建柱状图展示年度收支表效果示例
2017/02/15 PHP
PHP实现图片批量打包下载功能
2017/03/01 PHP
番茄的表单验证类代码修改版
2008/07/18 Javascript
jQuery示例收集
2010/11/05 Javascript
javascript算法学习(直接插入排序)
2011/04/12 Javascript
javaScript实现浮点数转十六进制字符
2013/10/29 Javascript
得到form下的所有的input的js代码
2013/11/07 Javascript
js支持键盘控制的左右切换立体式图片轮播效果代码分享
2015/08/26 Javascript
JavaScript如何调试有哪些建议和技巧附五款有用的调试工具
2015/10/28 Javascript
jQuery事件对象总结
2016/10/17 Javascript
详解Node.js 命令行程序开发教程
2017/06/07 Javascript
js排序与重组的实例讲解
2017/08/28 Javascript
Vue表单之v-model绑定下拉列表功能
2019/05/14 Javascript
Vue 自定义指令实现一键 Copy功能
2019/09/16 Javascript
[01:18:35]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第一场 1月29日
2021/03/11 DOTA
Python语言的面相对象编程方式初步学习
2016/03/12 Python
Python 常用 PEP8 编码规范详解
2017/01/22 Python
一个基于flask的web应用诞生 记录用户账户登录状态(6)
2017/04/11 Python
python实现拓扑排序的基本教程
2018/03/11 Python
Python实现批量执行同目录下的py文件方法
2019/01/11 Python
python实现的读取网页并分词功能示例
2019/10/29 Python
python 实现多线程下载m3u8格式视频并使用fmmpeg合并
2019/11/15 Python
python数据预处理 :样本分布不均的解决(过采样和欠采样)
2020/02/29 Python
python搜索算法原理及实例讲解
2020/11/18 Python
英国最大的汽车交易网站:Auto Trader UK
2016/09/23 全球购物
Michael Kors香港官网:美国奢侈品品牌
2019/12/26 全球购物
德国的各种媒体在线商店:Thalia.de(书籍、电子书、玩具等)
2020/10/08 全球购物
《小白兔和小灰兔》教学反思
2014/02/18 职场文书
化工专业自荐书
2014/06/16 职场文书
2015年政教主任工作总结
2015/07/23 职场文书
浅谈JavaScript作用域
2021/12/06 Javascript
2022微信温控新功能上线
2022/05/09 数码科技