将 属性 Id 设置为 uibModal

Set property Id to a uibModal

我想知道是否可以将 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!');
    });

任何帮助将不胜感激。

无法添加 "id" 属性 Ui Bootstrap 模态弹出

但是您可以使用初始化 $uibModal 的变量进行管理,在您的情况下它是 var modalInstance

以下是可能有帮助的参考例如

//Model Popup for e.g login User
var loginUser= $uibModal.open({
  .....
   ....
});

loginUser.result.then(function () {
 //Write your on success 
}, function () {
  //Write your code when model close event
});

//Other Model Popup for register User
var registerUser= $uibModal.open({
  .....
   ....
});

registerUser.result.then(function () {
 //Write your on success 
}, function () {
  //Write your code when model close event
}); 

希望我已经回答了你的问题

id 属性 可以由 ui-bootstrap[ 提供的 $uibModalStack 工厂添加=30=]:

$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);
});

注意$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>

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

plunker with 2 buttons applying 2 different ids and css 类: https://plnkr.co/edit/vMw1XtyNOED8PIDP0hWe?p=preview