Ionic中的$ionicModal使用方法

Ionic中[弹出式窗口]有两种(如下图所示),$ionicModal和$ionicPopup;

$ionicModal是完整的页面;

$ionicPopup是(Dialog)对话框样式的,直接用JavaScript设定对话框的一些参数,通常用于通知消息、确认等作用;

本文主要介绍IonicModal的使用方法

中文文档:http://ionicframework.net/docs/api/service/$ionicModal/

英文文档:http://ionicframework.com/docs/api/service/$ionicModal/

$ionicModal(中文翻译为‘模型’,感觉还是直接称为用Modal好一点。)

模型是一个内容面板,可以临时越过用户的主视图。通常用于选择或编辑一个项。注意,你需要把模型的内容放入一个带有modal类的div内。

举个例子,啥是Modal?:

登录或者注册页面的用户协议(图1),点击“用户协议”之后,会弹出用户协议具体内容(图2),这个地方就可以使用Modal来实现。图3中展示了Application运行起来之后,登录页面的源代码(这些都是ionic自己生成的),忽略其他信息,只看我标出来的红色1和红色2,当前红色2的元素是hide,当我们点击“用户协议”之后,红色2就会从“hide”变成“actived”,这时候我们就看到了图2的内容了。

图1 登录界面用户协议

图2 用户协议具体内容(Modal)

图3 查看网页源代码

如何实现Modal?

首先要有自己Modal的html代码,注意,你需要把模型的内容放入一个带有modal类的div内。:

<script id="my-modal.html" type="text/ng-template">
  <div class="modal">
    <ion-header-bar>
      <h1 class="title">我的模型标题</h1>
    </ion-header-bar>
    <ion-content>
      Hello!
    </ion-content>
  </div>
</script>

然后写自己的js代码(其实就是AngularJS代码)

这部分需要注意以下几点:

(1)不要忘了function的参数$ionicModal,否则会报错(用浏览器的调试工具F12可以看到)

(2)使用fromTemplateUrl将HTML代码中script(根据id)在HTML页面生成自己的Modal(也就是说,在打开页面的时候,是没有图3中的红色2 div的,当调用了fromTemplateUrl之后,才会生成这个div,而且每调用一次就会生成一个红色2 div哦,所以写代码的时候要把逻辑设计好,注意及时remove()。);

(3)openModal和closeModal函数很容易理解,这个估计是Modal最常用的方法;

(4)可以通过$scope.$on来进行更丰富的操作(当然,不用$scope.$on也可以进行丰富的操作。);

 1 angular.module(‘testApp‘, [‘ionic‘])
 2 .controller(‘MyController‘, function($scope, $ionicModal) {
 3   $ionicModal.fromTemplateUrl(‘modal.html‘, {
 4     scope: $scope,
 5     animation: ‘slide-in-up‘
 6   }).then(function(modal) {
 7     $scope.modal = modal;
 8   });
 9   $scope.openModal = function() {
10     $scope.modal.show();
11   };
12   $scope.closeModal = function() {
13     $scope.modal.hide();
14   };
15   //当我们用完模型时,清除它!
16   $scope.$on(‘$destroy‘, function() {
17     $scope.modal.remove();
18   });
19   // 当隐藏模型时执行动作
20   $scope.$on(‘modal.hide‘, function() {
21     // 执行动作
22   });
23   // 当移动模型时执行动作
24   $scope.$on(‘modal.removed‘, function() {
25     // 执行动作
26   });
27 });

详细说说创建的方法

可以使用字符串或者一个URL:

fromTemplate(templateString, options)

templateString  是字符串类型,存储的是模型的内容;

options是一个对象,存储的是ionicModal#initialize方法的选项;

返回一个Modal控制器实例;

一个options对象具有一下属性:

  • {object=} 范围 子类的范围。默认:创建一个$rootScope子类。
  • {string=} 动画 带有显示或隐藏的动画。默认:‘slide-in-up‘
  • {boolean=} 第一个输入框获取焦点 当显示时,模型的第一个输入元素是否自动获取焦点。默认:false。
  • {boolean=}backdropClickToClose` 点击背景时是否关闭模型。默认:true。

fromTemplateUrl(templateUrl, options)

templateUrl 是字符串类型,指向待加载模版的URL;

options与上边的一样;

返回一个promise对象,指向一个Modal控制器实例;

更直观一点的使用url创建:

1 $ionicModal.fromTemplateUrl(‘templates/hello.html‘, {// modal窗口选项
2     scope: $scope,
3     animation: ‘silde-in-up‘
4 }).then(function (modal) {
5      $scope.modal = modal;
6 })

templates目录下hello.html内容如下:

1 <ion-modal-view>
2     <ion-header-bar class="bar-energized">
3         <h1 class="title">标题</h1>
4     </ion-header-bar>
5     <ion-content>
6         Hello~~~~
7     </ion-content>
8 </ion-modal-view>

参考链接(这篇文章写的内容比较多,初学者不容易看懂):http://hybridap.blogspot.sg/2015/04/hybrid-apps52ionicmodal.html

时间: 2024-10-09 00:22:15

Ionic中的$ionicModal使用方法的相关文章

Ionic中[弹出式窗口]有两种(如下图所示),$ionicModal和$ionicPopup;

出处: http://www.cnblogs.com/CheeseZH/ $ionicModal是完整的页面: $ionicPopup是(Dialog)对话框样式的,直接用JavaScript设定对话框的一些参数,通常用于通知消息.确认等作用: $ionicModal(中文翻译为‘模型’,感觉还是直接称为用Modal好一点.) 模型是一个内容面板,可以临时越过用户的主视图.通常用于选择或编辑一个项.注意,你需要把模型的内容放入一个带有modal类的div内. 举个例子,啥是Modal?: 登录或

解决 ionic 中的 CORS(跨域)

译者注:本人翻译功力有限,所以文中难免有翻译不准确的地方,凑合看吧,牛逼的话你看英文版的去,完事儿欢迎回来指正交流(^_^) 如果你通过 ionic serve 或者 ionic run 命令使用或 live reload 或者访问过外部 API 结点,那么你肯定遇到过 CORS 问题,譬如下面这样: XMLHttpRequest cannot load http://api.ionic.com/endpoint. No 'Access-Control-Allow-Origin' header

schema中的虚拟属性方法

schema中的虚拟属性方法相当于vue中的计算属性,它是通过已定义的schema属性的计算\组合\拼接得到的新的值 var personSchema = new Schema({ name: { first: String, last: String } }); var Person = mongoose.model('Person', personSchema); // create a document var bad = new Person({ name: { first: 'Walt

zabbix2.2.3中乱码的解决方法

当将zabbix2.2.3中的语言改为中文后图形后显示如下 解决方法: 1.查看zabbix的字体文件 [[email protected] ~]# cd /usr/share/zabbix/fonts/[[email protected] fonts]# lsgraphfont.ttf 2.将windows系统中你想用的字体文件复制到linux系统中,然后再将字体文件复制到zabbix字体所在的目录中 [[email protected] ~]# cp STXIHEI.TTF /usr/sha

在.net中序列化读写xml方法的总结

在.net中序列化读写xml方法的总结 阅读目录 开始 最简单的使用XML的方法 类型定义与XML结构的映射 使用 XmlElement 使用 XmlAttribute 使用 InnerText 重命名节点名称 列表和数组的序列化 列表和数组的做为数据成员的序列化 类型继承与反序列化 反序列化的实战演练 反序列化的使用总结 排除不需要序列化的成员 强制指定成员的序列化顺序 自定义序列化行为 序列化去掉XML命名空间及声明头 XML的使用建议 XML是一种很常见的数据保存方式,我经常用它来保存一些

URL地址中中文乱码详解(javascript中encodeURI和decodeURI方法、java.net.URLDecoder.encode、java.net.URLDecoder.decode)

引言: 在Restful类的服务设计中,经常会碰到需要在URL地址中使用中文作为的参数的情况,这种情况下,一般都需要正确的设置和编码中文字符信息.乱码问题就此产生了,该如何解决呢?且听本文详细道来. 1.  问题的引出 在Restful的服务设计中,查询某些信息的时候,一般的URL地址设计为: get /basic/service? keyword=历史 , 之类的URL地址. 但是,在实际的开发和使用中,确是有乱码情况的发生,在后台的读取keyword信息为乱码,无法正确读取. 2. 乱码是如

jquery中html 与 text方法的区别

jquery中html 与 text方法的区别 24 May 2012/in 网站设计和开发 /by Bruce 接鉵jquery的时间并不长,以前都是用直接用js写的,现在发现在jquery这个框架用起来很方便,不但代码量少了,使用也比较简单,对于浏览器的兼容问题也不用担心,在使用的过程中也会遇到一些疑问,在html标签中附加子标签时所用的方法html()与text()的区别. 通常在用jquery写ajax时,都会用到html()这个方法,而不用text()这个方法,他们之间有什么区别呢?

iOS5中UIViewController的新方法

iOS5中UIViewController的新方法 前言 在苹果的 WWDC2011 大会视频的<Session 101 - What’s New in Cocoa> 和<Session 102 - Implementing UIViewController Containment> 中介绍了苹果在 iOS5 中给 UIViewController 新增加的 5 方法以及一个属性: // 方法addChildViewController: removeFromParentViewC

JavaScript中事件绑定的方法总结

最近收集了一些关于JavaScript绑定事件的方法,汇总了一下,不全面,但是,希望便于以后自己查看. JavaScript中绑定事件的方法主要有三种: 1 在DOM元素中直接绑定 2 JavaScript代码中直接绑定 3 绑定事件监听函数 一.在DOM元素中直接绑定 也就是直接在html标签中通过 onXXX=“” 来绑定.举个例子: <input type="button" value="点我呦" onclick="alert("he