我正在使用 AngularJs UI Bootstrap 中的模态来解释here
我希望模式显示在页面的特定部分(例如,在特定的DIV中), 只会使容器变黑而不是全屏。
以下是示例,我希望模态仅显示在浅蓝色部分(id="chat"
)上
http://plnkr.co/edit/tEnmm7RDOiB6sag4ailo?p=preview
答案 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。