Есть ли способ вызвать.opened() в angular-ui modal?

Я пытаюсь выяснить, как вызвать .opened() для моего модального. Я хочу, чтобы после того, как все данные были загружены в мой модал, я бы хотел .opened() быть вызванным. Я знаю что opened() запускается, когда модальный режим уже открыт, есть ли способ изменить это, как, может быть, только вызвать его после того, как я инициализировал значения в моем контроллере?

    var modalInstance = $modal.open({
      templateUrl: 'myModalContent.html',
      controller: 'ModalInstanceCtrl'
    });

    modalInstance.opened.finally(function() {
           doSomething();
    });

Asdas

angular.module('ui.bootstrap.demo').controller('ModalInstanceCtrl', function ($scope, $modalInstance, items) {

  init();

  function init() {
     // do initializations here....
     // then resolve the opened() function... but how?
  }

  $scope.ok = function () {
    $modalInstance.close($scope.selected.item);
  };

  $scope.cancel = function () {
    $modalInstance.dismiss('cancel');
  };
});

1 ответ

Решение

Просто передайте объект с помощью функции onOpen:

  $scope.ctrl = {
    onOpen: function() {
      console.log('open!');
    }
  };

    var modalInstance = $uibModal.open({
      animation: $scope.animationsEnabled,
      templateUrl: 'myModalContent.html',
      controller: 'ModalInstanceCtrl',
      size: size,
      resolve: {
        ctrl: function () {
          return $scope.ctrl;
        }
      }
    });

а потом:

function init() {
  ctrl.onOpen();
}

http://plnkr.co/edit/wxwkV1cjT1gO8xGZDVgm?p=preview

Другие вопросы по тегам