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()。);

ionic model指令学习

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

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

添加$ionicModal依赖,便可以使用$ionicModal。$ionicModal使用了deferred来异步加载模板,加载完成后会返回modal对象,这里使用了$scope.modal = modal来接收这个modal对象,从而控制这个modal。这样我们就实现了一个modal。

相关推荐