0

次のようなディレクティブがあります。

'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>
4

1 に答える 1

1

$scope.listenToリッスンするイベントとして使用...

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

注: また、ディレクティブのコントローラー関数に$scopeandを挿入しています。$rootScope

注 #2:イベント リスナー$rootScope.$onの代わりに使用している理由がわかりません。$scope.$onこれを使用$rootScopeしてもよろしいですか?

于 2015-04-27T03:40:20.933 に答える