ionic model指令学习
文章参考
http://blog.csdn.net/pdw2009/article/details/47832921
http://www.cnblogs.com/CheeseZH/p/4522264.html
Ionic中[弹出式窗口]有两种(如下图所示),ionicModal和ionicModal和ionicPopup;
$ionicModal是完整的页面;
$ionicPopup是(Dialog)对话框样式的,直接用JavaScript设定对话框的一些参数,通常用于通知消息、确认等作用;
例子
<!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"> <!--<script src="public/js/jquery.js"></script>--> <script src="../public/ionic/js/ionic.bundle.min.js"></script> <link rel="stylesheet" type="text/css" href="../public/ionic/css/ionic.min.css"> </head> <body ng-controller="myCtrl"> <ion-header-bar class="bar-energized"> <h1 class="title">Contact Info</h1> </ion-header-bar> <ion-content> <div class="card" ng-click="openModal()"> <div class="item item-divider"> {{contact.name}} </div> <div class="item item-text-wrap"> {{contact.info}} </div> </div> </ion-content> <script id="contact-modal.html" type="text/ng-template"> <div class="modal"> <ion-header-bar> <h1 class="title">Edit Contact</h1> </ion-header-bar> <ion-content> <div class="list"> <label class="item item-input"> <span class="input-label">Name</span> <input type="text" ng-model="contact.name"> </label> <label class="item item-input"> <span class="input-label">Info</span> <input type="text" ng-model="contact.info"> </label> </div> <button class="button button-full button-energized" ng-click="closeModal()">Done</button> </ion-content> </div> </script> </body> </html> <script> angular.module('myApp', ['ionic']) .controller('myCtrl', function($scope,$ionicModal) { $scope.contact = { name: 'Mittens Cat', info: 'Tap anywhere on the card to open the modal' }; $ionicModal.fromTemplateUrl('contact-modal.html', { scope: $scope, animation: 'slide-in-up' }).then(function(modal) { $scope.modal = modal }); //弹出model 层 $scope.openModal = function() { $scope.modal.show() }; //关闭model 层 $scope.closeModal = function() { $scope.modal.hide(); }; $scope.$on('$destroy', function() { $scope.modal.remove(); }); }); </script>
这部分需要注意以下几点:
(1)不要忘了function的参数$ionicModal,否则会报错(用浏览器的调试工具F12可以看到)
(2)使用fromTemplateUrl将HTML代码中script(根据id)在HTML页面生成自己的Modal(也就是说,在打开页面的时候,是没有图3中的红色 div的,当调用了fromTemplateUrl之后,才会生成这个div,而且每调用一次就会生成一个红色 div哦,所以写代码的时候要把逻辑设计好,注意及时remove()。);
(3)openModal和closeModal函数很容易理解,这个估计是Modal最常用的方法;
(4)可以通过scope.scope.on来进行更丰富的操作(当然,不用scope.scope.on也可以进行丰富的操作。);
添加$ionicModal依赖,便可以使用$ionicModal。$ionicModal使用了deferred来异步加载模板,加载完成后会返回modal对象,这里使用了$scope.modal = modal来接收这个modal对象,从而控制这个modal。这样我们就实现了一个modal。