Установка, какие события я хочу, чтобы мои директивы слушали
У меня есть такая директива:
'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
за это?