Angular UI Bootstrap Popover - 如何添加关闭按钮

2024-04-22

我有一个表格,每个单元格都有一个弹出窗口,如下例所示:

对弹出窗口的调用:

<td ng-repeat="i in c.installments" ng-class="{ 'first' : i.first, 'last' : i.last, 'advance' : i.advance.value > 0, 'edited' : i.edited, 'final-installment' : i.last }" popover-trigger="{{ popoverFilter(i) }}" popover-placement="top" popover-title="{{i.id == 0 ? 'Advance' : 'Installment ' + i.id}}" popover-append-to-body="true" popover-template="popoverTemplate(i)" ng-init="payment= i; newpayment= i.amount.rounded_value" >

弹出框模板:

<script type="text/ng-template" id="editPopoverTemplate.html">
    <form name="editPayment">
      <h2>{{payment.amount.value|currency:undefined:cents}}</h2>
      <div class="form-group" ng-class="{ 'has-error' : editPayment.newpayment.$invalid }">
        <label>New value:</label>
        <input type="number" name="newpayment" ng-model="newpayment" class="form-control no-spinner" step="1" min="10" required>
        <span ng-messages="editPayment.newpayment.$error" class="help-block" role="alert">
          <span ng-message="required">The value is mandatory</span>
          <span ng-message="min">The value is too low</span>
          <span ng-message="max">The value is too hight</span>
        </span>
      </div>
      <div class="btn-group btn-group-justified" role="group">
        <div class="btn-group" role="group">
          <button class="btn" type="button">Cancel</button>
        </div>
        <div class="btn-group" role="group">
          <button class="btn btn-primary" type="button" ng-disabled="editPayment.$invalid">Save</button>
        </div>
      </div>
    </form>
  </script>

plunker 的工作示例 http://plnkr.co/edit/ArIDkkXs9Ev6ROBLSvDd?p=preview

我需要通过弹出窗口内的“取消”按钮关闭弹出窗口。 这是可能的?我需要扩展 Angular UI Bootstrap 库才能做到这一点?

任何帮助表示赞赏。

当用户单击弹出窗口内部或弹出窗口外部时,链接答案中建议的解决方案会关闭弹出窗口,但我需要通过弹出窗口内的“关闭”按钮将其关闭。


使用新的正确解决方案popover-is-open正如下面@icfantv 所提到的,属性允许使用控制器作用域。我在中放置了一个实例Codepen http://codepen.io/dmvianna/pen/OyNNJx,它是这样的:

app = angular.module('ui.bootstrap.demo', ['ui.bootstrap']);

app.controller(
  'myPopoverCtrl', ['$scope',
    function($scope) {

      // query popover
      $scope.myPopover = {

        isOpen: false,

        templateUrl: 'myPopoverTemplate.html',

        open: function open() {
          $scope.myPopover.isOpen = true;
          $scope.myPopover.data = 'Hello!';
        },

        close: function close() {
          $scope.myPopover.isOpen = false;
        }
      };

    }

  ]);
<head>

  <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
  <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
  <script src="//cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/0.13.4/ui-bootstrap-tpls.min.js">
  </script>
  <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">

</head>

<body 
      ng-app="ui.bootstrap.demo" 
      class="container">

  <button 
          class="btn btn-danger" 
          ng-controller="myPopoverCtrl" 
          popover-template="myPopover.templateUrl" 
          popover-title="This is a popover" 
          popover-placement="bottom" 
          popover-is-open="myPopover.isOpen" 
          ng-click="myPopover.open()">Click me!</button>

  <script type="text/ng-template" 
          id="myPopoverTemplate.html">
    <h2 ng-bind="myPopover.data" />
    <button class="btn btn-success" 
            ng-click="myPopover.close()">Close me!</button>

  </script>

</body>

原答案:

我花了两天时间解决这个问题,终于想出了一个足够简单的技巧。这在我的控制器上进行:

 $scope.close = function(e) {
     el = angular.element(e.target).closest("td"); // `td` is the parent of my clickable
                                                   // element, in this case a `span`
     $timeout(function() { // need $timeout so we don't conflict with the digest loop
     el.children(":first").trigger('close'); // couldn't select the `span` element directly
     });
 },

现在我们设置了close在提供者上触发:

app.config(['$tooltipProvider', function($tooltipProvider){
  $tooltipProvider.setTriggers({
    'click': 'close', // Clicks now only open the tooltip, 'close' events close it.
  });
}]);

在我的自定义弹出窗口 HTML 模板上:

<button type="button" 
        class="btn btn-sm btn-success pull-right" 
        ng-click="close($event)">Close</button>

瞧!我现在可以通过按钮关闭弹出窗口!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular UI Bootstrap Popover - 如何添加关闭按钮 的相关文章

随机推荐

  • Paper-fab 部分隐藏在应用程序工具栏后面

    我想导入一个包含paper fab并拥有paper fab重叠之间的接缝app header元素和导入的元素 在本例中 我将导入的元素称为fab element 换句话说 我只是想要paper fab 漂浮 正如广告所言 就像它应该的那样
  • Android 邮件发送验证

    我使用下面的代码将电子邮件发送到可能的电子邮件地址 当我单击 发送 按钮时 有一条 toast 消息显示 消息发送 但我的代码中没有它 它必须是默认的 我的问题是 这表示消息将被发送 但没有说明消息已发送 我知道无法检查它是否到达 但应该有
  • 将 webpack 应用于全栈节点应用程序最合理的方式是什么?

    我已经研究 webpack 几个星期了 我已经看到了很多前端设置的例子 可能只是这是后端的设置 http jlongster com Backend Apps with Webpack Part I 我正在尝试设置一个带有节点后端 例如ex
  • 从android中的drawable文件夹中随机生成图像

    安卓版本 4 2我正在开发一个安卓应用程序 我需要从可绘制文件夹中随机生成图像 在我的绘图中 我有 45 张具有不同名称的图像 我的xml代码是
  • 在 C 中使用 Go 切片

    我正在尝试构建一个带有返回切片的函数的 go 共享库 如何使用 C 代码中的切片 package main import C type T struct A C int B C char export Test func Test T ar
  • Active Directory“-approx”过滤器运算符如何工作?

    查看 AD Cmdlet 时 Filter今天早些时候 我遇到了一个我以前从未见过的操作员 approx 我可以在几个博客和一些 TechNet 文章中找到提到此运算符 但我没有找到任何解释此运算符的用途的信息 除了 大约等于 的使用定义之
  • 如何使用 Node.js 按需解析记录?

    是否有一个 Node 模块可以从 CSV 文件中解析特定数量的记录 用例是解析大型日志文件并根据请求将记录传送到分页客户端 node csv https github com wdavidw node csv can t yet https
  • 设置持续时间格式,如 HH:mm:ss

    有没有一种好方法可以将持续时间格式化为 hh mm ss 之类的格式 而不必处理时区 我试过这个 DateTime durationDate DateTime fromMillisecondsSinceEpoch 0 String dura
  • NET40-RequiresCastle 和 NET40 版本的 Moq 有什么区别?

    在moq的发行版中 有两个版本 NET40 RequiresCastle和NET40 NET40 RequiresCastle 看起来比 NET40 小得多 但在运行时需要 Castle 区别只是因为 Castle 嵌入在 NET40 版本
  • 带有连字符的 ActionLink htmlAttributes

    这有效 a href Url Action class ui btn right Edit a 但这不是 为什么 Html ActionLink Edit edit markets new id 1 new class ui btn rig
  • 在netbeans中使用视觉摆动JPopupmenu

    我想向我的应用程序添加一个弹出菜单 但是当我将它添加到我的面板时 我看到它消失了 我如何像其他菜单一样直观地编辑 jpopup 菜单 我认为您正在谈论在 NetBeans 中使用 matisse 视觉设计器 在这种情况下 该过程与创建只需将
  • 如何使用命名空间从 XML 中“选择”?

    我有一个类似 的 XML 文档
  • setattr 和 getattr 方法

    我有一个锅炉板类 它将一些操作委托给参考类 它看起来像这样 class MyClass def init self someClass self refClass someClass def action1 self self refCla
  • 使用数据库游标有什么好处?

    这是基于我面临的面试问题 非常短的定义可以是 它可用于操作行 由查询返回 除了使用光标之外 列出了点here http msdn microsoft com en us library ms191179 aspx在MSDN上 我心中有一个问
  • Haskell:单词,取消单词分隔符

    有什么办法可以提供分隔符words and unwords在haskell中 使其类似于python中的split和join 另请查看友好的包裹split 它提供了一个模块Data List Split http hackage haske
  • 从 ANT 运行 BAT 文件

    我浏览了论坛上的许多帖子 但无法整理出来 我正在尝试从 ANT 脚本运行 BAT 文件 文件夹层次结构是这样的 Project build xml build C test bat 我编写的 ANT 文件是
  • Railstutorial.org - 未定义的方法“工厂”

    我正在尝试关注 Railstutorial org 目前正在阅读第 7 章 您将在其中开始使用工厂 http railstutorial org chapters modeling and viewing users two sec tes
  • 如何在android中压缩文件夹以制作docx文件?

    我正在尝试制作一个 Android 应用程序 可以打开 docx 文件来读取 编辑和保存它 我的想法是将存档中的所有 xml 文件提取到临时文件夹中 在这个文件夹中我们可以编辑docx的内容 word document xml 问题是当我压
  • java中的for循环和i的值

    在 Horstmann 的 java 教科书 Big Java Late Objects 中 对于 for 循环 例如 for i 0 i lt 5 i 霍斯特曼说 价值观i对于这个 for 循环是0 1 2 3 4 5 然而 在我看来 i
  • Angular UI Bootstrap Popover - 如何添加关闭按钮

    我有一个表格 每个单元格都有一个弹出窗口 如下例所示 对弹出窗口的调用 td td