部分页面上的AngularJs模态对话框

时间:2013-09-24 14:35:25

标签: twitter-bootstrap angularjs modal-dialog

我正在使用 AngularJs UI Bootstrap 中的模态来解释here

我希望模式显示在页面的特定部分(例如,在特定的DIV中), 只会使容器变黑而不是全屏。

以下是示例,我希望模态仅显示在浅蓝色部分(id="chat")上 http://plnkr.co/edit/tEnmm7RDOiB6sag4ailo?p=preview

1 个答案:

答案 0 :(得分:4)

通常情况下,由于AngularJs UI Bootstrap创建的每个模态都发生在html正文中,因此不可能。话虽这么说总有办法:)

免责声明:以下是一种黑客攻击,我强烈建议您创建自己的指令。

模态组件公开两个承诺,一个名为结果,另一个名为打开。在我们的例子中,我们将使用第二个来知道模态何时打开和可见。从那里我们可以将模态附加到另一个div元素,如下所示:

    var modalInstance = $modal.open({
        windowClass : 'uniqueClassName', //use to easily find the dom element
        templateUrl: 'modal.html',
        controller: ChatModalController
    });
    modalInstance.opened.then(function(){
      $timeout(function(){
        var modalDom = document.querySelector('.uniqueClassName'); // The modal
        var modalBackDom = document.querySelector('.modal-backdrop'); //The backdrop
        var chatDom = document.querySelector('#chat');

        chatDom.appendChild(modalDom); //Move modal & backdrop inside chat div
        chatDom.appendChild(modalBackDom);

      });
    })

为了适应新的场景,我们还应该添加/修改一些类似的css类:

  #chat {position:relative;}
  #chat .modal,
  #chat .modal-backdrop{
    position : absolute;
  }

最后,你可以看到一个有效的Plunker here