将属性 Id 设置为 uibModal

Tek*_*son 1 javascript angularjs angular-ui-bootstrap

我想知道是否可以将 Id 属性设置为通过 $uibModal 生成的模态,以便稍后我可以通过其 Id 捕获对应元素。我成功地生成了我需要的尽可能多的模态,尽管它们不是用以下代码唯一标识的:

    var modalInstance = $uibModal.open({
        templateUrl: 'openChat.html',
        scope: $scope,
        backdrop: 'static',
        keyboard: false,
        controller: 'openChatModalCtrl',
        windowClass: 'chat-modal',
        size: 'sm'
    }).rendered.then(function () {
        console.log('there you go!');
    });
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激。

And*_*riy 5

可以$uibModalStackui-bootstrap提供的工厂添加id属性:

$ctrl.open = function (size, windowTopClass, id) {
var modalInstance = $uibModal.open({
  ariaLabelledBy: 'modal-title',
  ariaDescribedBy: 'modal-body',
  templateUrl: 'myModalContent.html',
  controller: 'ModalInstanceCtrl',
  controllerAs: '$ctrl',
  size: size,
  windowTopClass: windowTopClass,
  windowTemplateUrl: 'my-window.html',
  resolve: {
    projects: function () {
      return $ctrl.projects;
    }
  }
}).rendered.then(function () {
  $uibModalStack.getTop().value.modalDomEl.attr('id', id);
});
Run Code Online (Sandbox Code Playgroud)

注意$uibModalStack.getTop().value.modalDomEl.attr('id', id);行,这样id可以从模板传递:

<button type="button" 
        class="btn btn-default" 
        ng-click="$ctrl.open('lg', 'my-outer-class2', 'myID2')">Open me2!</button>
Run Code Online (Sandbox Code Playgroud)

还请注意,您可以使用函数的 windowTopClasswindowClass属性$uibModal.open(),这些类也将被添加到顶部模态级别,因此您也可以将它们用于唯一的选择器。

带有 2 个按钮的 plunker 应用 2 个不同的id和 css 类:https : //plnkr.co/edit/vMw1XtyNOED8PIDP0hWe?p=preview