Как я могу контролировать инициализацию директивы angular?

У меня есть директива, которая используется как элемент управления формой. Эта директива скрыта в модальном диалоговом окне и отображается, когда пользователь нажимает кнопку, чтобы показать форму. Поскольку эта директива соединяется с некоторыми веб-службами, я не хочу, чтобы она инициализировалась, если пользователь не нажимает кнопку и не отображает форму (чтобы избежать ненужных вызовов веб-службы). Итак, я ищу, это хороший способ, чтобы родительский контроллер запускал директиву для выполнения некоторого кода инициализации. Вот пример:

App.controller('parentCtrl', ['$scope', function($scope) {
  $scope.onButtonClick = function onButtonClick() {
    // tell directive to init somehow
  };
}]);

App.directive('myDirective', function() {
return {
  restrict: 'E',
  scope: {},
  controller: function($scope, myService) {
    function init() {
      myService.getData().then(function(value) { //do init stuff });
    }
  }
});

Предположим, что шаблон для parentCtrl содержит тег.

Ответ 1

Пометка вашего элемента в ng-if предотвратит инициализацию директивы, прежде чем она понадобится. (scope.loadModal должно быть ложным по умолчанию)

<my-directive ng-if='loadModal'></mydirective>

Примечание. Установка scope.loadModal = false после отображения директивы однажды выгрузит директиву из вашей DOM. Вернувшись к true, перезагрузите директиву, в результате получив другой запрос http.