$modal是一个可以迅速创建模态窗口的服务,创建部分页,控制器,并关联他们

$modal仅有一个方法open(options)

  • templateUrl:模态窗口的地址
  • template:用于显示html标签
  • scope:一个作用域为模态的内容使用(事实上,$modal会创建一个当前作用域的子作用域)默认为$rootScope
  • controller:为$modal指定的控制器,初始化$scope,该控制器可用$modalInstance注入
  • resolve:定义一个成员并将他传递给$modal指定的控制器,相当于routes的一个reslove属性,如果需要传递一个objec对象,需要使用angular.copy()
  • backdrop:控制背景,允许的值:true(默认),false(无背景),“static” - 背景是存在的,但点击模态窗口之外时,模态窗口不关闭
  • keyboard:当按下Esc时,模态对话框是否关闭,默认为ture
  • windowClass:指定一个class并被添加到模态窗口中

open方法返回一个模态实例,该实例有如下属性

  • close(result):关闭模态窗口并传递一个结果
  • dismiss(reason):撤销模态方法并传递一个原因
  • result:一个契约,当模态窗口被关闭或撤销时传递
  • opened:一个契约,当模态窗口打开并且加载完内容时传递的变量

另外,$modalInstance扩展了两个方法$close(result)$dismiss(reason),这些方法很容易关闭窗口并且不需要额外的控制器

  1. <!DOCTYPE html>
  2. <html ng-app="ModalDemo">
  3. <head>
  4. <title></title>
  5. <link href="lib/bootstrap/css/bootstrap.min.css" rel="stylesheet">
  6. <script src="lib/angular/angular.min.js"></script>
  7. <script src="lib/bootstrap-gh-pages/ui-bootstrap-tpls-0.7.0.min.js"></script>
  8. <script src="lib/angular/i18n/angular-locale_zh-cn.js"></script>
  9. </head>
  10. <body>
  11. <div ng-controller="ModalDemoCtrl">
  12. <script type="text/ng-template" id="myModalContent.html">
  13. <div class="modal-header">
  14. <h3>I'm a modal!</h3>
  15. </div>
  16. <div class="modal-body">
  17. <ul>
  18. <li ng-repeat="item in items">
  19. <a ng-click="selected.item = item">{{ item }}</a>
  20. </li>
  21. </ul>
  22. Selected: <b>{{ selected.item }}</b>
  23. </div>
  24. <div class="modal-footer">
  25. <button class="btn btn-primary" ng-click="ok()">OK</button>
  26. <button class="btn btn-warning" ng-click="cancel()">Cancel</button>
  27. </div>
  28. </script>
  29. <button class="btn" ng-click="open()">Open me!</button>
  30. </div>
  31. <script>
  32. var ModalDemo = angular.module('ModalDemo', ['ui.bootstrap']);
  33. var ModalDemoCtrl = function ($scope, $modal, $log) {
  34. $scope.items = ['item1', 'item2', 'item3'];
  35. $scope.open = function () {
  36. var modalInstance = $modal.open({
  37. templateUrl: 'myModalContent.html',
  38. controller: ModalInstanceCtrl,
  39. resolve: {
  40. items: function () {
  41. return $scope.items;
  42. }
  43. }
  44. });
  45. modalInstance.opened.then(function(){//模态窗口打开之后执行的函数
  46. console.log('modal is opened');
  47. });
  48. modalInstance.result.then(function (result) {
  49. console.log(result);
  50. }, function (reason) {
  51. console.log(reason);//点击空白区域,总会输出backdrop click,点击取消,则会暑促cancel
  52. $log.info('Modal dismissed at: ' + new Date());
  53. });
  54. };
  55. };
  56. var ModalInstanceCtrl = function ($scope, $modalInstance, items) {
  57. $scope.items = items;
  58. $scope.selected = {
  59. item: $scope.items[0]
  60. };
  61. $scope.ok = function () {
  62. $modalInstance.close($scope.selected);
  63. };
  64. $scope.cancel = function () {
  65. $modalInstance.dismiss('cancel');
  66. };
  67. };

随机推荐

  1. 【Luogu】P3761城市(dfs)

    题目链接 emmm我思维好水…… 想了一会lct发现好像不对,然后开始转DP稍微有一点思路,然后看了题解…… 首先可以枚举边,然后原树被你拆成了两个子树. 设D1D2是两个子树的直径,W1W2是子树内 ...

  2. 【Luogu】P3565HOT-Hotels(树形DP)

    题目链接 水了半个月之后Fd终于开始做题啦! 然后成功的发现自己什么都不会了 树形DP,既然是三个点两两距离相等那一定得有个中心点吧,枚举那个中心点,然后暴力DFS,根据乘法原理算. 乘法原理就是我一 ...

  3. 刷题总结——work(ssoj)

    题目: 题目背景 SOURCE:NOIP2015-SHY-5 题目描述 假设现在离 noip 还有 m 天,有 n 个人要去参加比赛.他们每个人都有一个预定的训练量 r[i] ,所以每一天他们都抓紧时 ...

  4. 瞄一眼CopyOnWriteArrayList(jdk11)

    CopyOnWriteArrayList是ArrayList线程安全的变体.使用写时复制策略进行修改操作. 与之前版本较明显的区别是,jdk11中用来保护所有设值方法(mutator)的Reentra ...

  5. JDBC链接mysql,时间时0000-00-00 00:00:00时报错

    应为mysql默认最小timestamp是0001-01-01 00:00:00,所以查询出来会报错 需要加在链接的url中加入 &zeroDateTimeBehavior=convertTo ...

  6. python logger日志工具类

    pytest命令行执行默认不会打印log信息,需要加‘-s’参数或者 ‘–capture=no’,即pytest -s #! /usr/bin/env python # coding=gbk impo ...

  7. Word Ladder系列

    1.Word Ladder 问题描述: 给两个word(beginWord和endWord)和一个字典word list,找出从beginWord到endWord之间的长度最长的一个序列,条件: 1. ...

  8. 通配符、正则表达式、python去重

    1.linux通配符 *:代表所有字符(0到多个); ?:代表一个字符; ;:连续不同命令之间的分隔符; #:配置文件注释; |:管道; ~:当前用户的家目录; -:上一次所在的路径; $:变量前面需 ...

  9. free如何知道释放内存长度:vs与glibc分配内存时编译器内部处理

    鉴于网上这个资料实在太少,将以前整理过却未完全的一篇文章贴出来,希望大牛指正vs下内存管理方式.可联系gaoshiqiang1987@163.com vs分配内存 vs没有源码,编译器在分配内存时,分 ...

  10. Java中泛型T和Class<T>以及Class<?>的理解(转)

    注意:class是java的关键字, 在声明Java类时使用; Class类的实例表示Java应用运行时的类(class ans enum)或接口(interface and annotation)( ...