Установка, какие события я хочу, чтобы мои директивы слушали

У меня есть такая директива:

'use strict';

angular.module('epw')
  .directive('md-title', function ($rootScope) {
    return {
      scope: {
        listenTo: '@'
      },
      controller: function () {
        $rootScope.$on('event', function (e, msg) {
          console.log('do something');
        }); // how to I dynamically change what to listen to using the scope `listenTo`
      },
      controllerAs: 'ctrl',
      bindToController: true,
      templateUrl: 'md-title.html'
    }
  });

У меня есть это:

<md-title listen-to="TITLE_SELECTION_UPDATED"></md-title>

а также

<div class="m-section-header">
  <h1 class="epw-header">{{ctrl.title}}</h1>
</div>

1 ответ

Решение

Использование $scope.listenTo как событие для прослушивания...

controller: function($scope, $rootScope) {
    $rootScope.$on($scope.listenTo, function (e, msg) {
        console.log('do something');
    }); 
}

Примечание: я также делаю инъекцию $scope а также $rootScope в функцию контроллера директивы.

Примечание № 2: я не уверен, почему вы используете $rootScope.$on вместо просто $scope.$on для слушателя вашего мероприятия. Вы уверены, что хотите использовать $rootScope за это?

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