Как вызвать пользовательскую директиву в функции области действия другого контроллера

Я новичок в AngularJS. Может ли кто-нибудь рассказать мне на примере, как вызвать пользовательскую директиву в функции области действия другого контроллера.

Например, у меня есть контроллер со следующей функцией:

angularApp.controller('sample_Ctrl', function ($scope, $http, $timeout, $rootScope, $location) {
     $scope.showReport = function(id) {
     };
});

Я создал customDirective следующим образом:

var showModalDirective = function ($timeout) {
    return {
        restrict: 'E',
        templateUrl: '/Partials/template1.html',
    };
};
angularApp.directive('showModal', showModalDirective);

Итак, как вызвать эту директиву в функции showReport и как я могу передать идентификатор в URL-адрес шаблона?


person user1268130    schedule 28.06.2016    source источник
comment
Ваш вопрос не ясен. Можете ли вы добавить контекст/пример?   -  person T J    schedule 28.06.2016
comment
Что вы подразумеваете под вызовом директивы?   -  person Mehraban    schedule 28.06.2016
comment
Я добавил с примером, можете ли вы, ребята, проверить сейчас   -  person user1268130    schedule 28.06.2016


Ответы (2)


Вы не можете позвонить directive в controller. Это должно быть service.

Или вы можете использовать директиву в поле зрения:

Директива:

var showModalDirective = function ($timeout) {
    return {
        restrict: 'E',
        scope: {
           modalId: '='
        },
        templateUrl: '/Partials/template1.html',
    };
};

angularApp.directive('showModal', showModalDirective);

Контроллер:

angularApp.controller('sample_Ctrl', function ($scope, $http, $timeout, $rootScope, $location) {

  $scope.showModal = false;

  $scope.showReport = function(id) {
    $scope.showModal = true;
    $scope.modalId = id;
  };
});

Просмотр:

<div ng-if="showModal">
   <show-modal modal-id="modalId"></show-modal>
</div>

Директива showModal вызывается, когда переменная showModal имеет значение true.

person Huy Chau    schedule 28.06.2016

Чтобы использовать вашу директиву, сначала вам нужно создать элемент HTML с тем же именем, что и ваша директива, а затем предоставить данные для этой директивы из вашего контроллера. Предположим, что на вашей html-странице есть div.

<div show-modal>  </div>

Затем на этой странице ваш template1.html будет вызывать внутреннюю директиву и предположим, что в template1.html есть какой-то элемент html, например

code in your controller -
angularApp.controller('sample_Ctrl',function() {
     $scope.firstName= "My First Name"
})
person MukulSharma    schedule 28.06.2016