Обработчик события директивы вызова, исходящий от родительского контроллера

У меня есть требование, как я хочу, чтобы выдать событие из контроллера, и обработчик событий присутствует в директиве контроллера (то есть дочерний контроллер).

Пожалуйста, найдите код ниже:

<div ng-app="myApp" ng-controller="appController">
   <div test></div>
</div>


/* Fiddle to call views directive event from the view controller */

var app = angular.module('myApp', []);

app.controller('appController', function ($scope, $timeout) {
console.log('Inside Controller');

// If timeout is removed test-event handler will not be called as test controller is not yet executed by the time event was raised

  //$timeout(function () {
    $scope.$broadcast('test-event');
  //});
});

app.directive('test', function () {
   return {
      restrict: 'A',
      controller: function ($scope) {
          console.log("Inside test directive controller");
          $scope.$on('test-event', function () {
              console.log("Test event fired");
          });
      }
   };
});

Если я откомментирую $ timeout в приведенном выше коде, мой код работает нормально. Но я хочу узнать какое-то лучшее решение, чем использовать вышеуказанное решение.

У меня есть этот сценарий в моем проекте в виде, где у меня есть контроллер представления и директива с обработчиком событий и передачей события из контроллера представления.

0 ответов

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