0

服务

export class RandomServiceName implements ng.IServiceProvider {
  /* @ngInject */
  constructor(private $rootScope: ng.IRootScopeService) {
  }

  public $get(): RandomServiceName {
    return this;
  }

  doStuff() {
      this.$rootScope.$broadcast('hello', 'world');
  }
}

控制器

import {RandomServiceName} from './random_service_name.ts';

export class RandomController {
  /* @ngInject */
  constructor(private $rootScope: ng.IRootScopeService,
              private $log: ng.ILogService,
              private RandomServiceName: RandomServiceName) {
      this.RandomServiceName.doStuff();
      this.$rootScope.$on('hello', (event: ng.IAngularEvent, data: string) =>
          this.$log.info(`Event '${event.name}' caught with data ${data}`)
      );
  }
}

但这没有意义,因为constructor仅调用一次(每次启动)...:\

4

1 回答 1

0

你放入$on你的控制器,你也$off使用你的控制器范围的$destroy事件。

更多:https : //docs.angularjs.org/api/ng/type/$rootScope.Scope#$destroy

活动

$销毁

当作用域及其子对象被销毁时广播。请注意,在 AngularJS 中,还有一个 $destroy jQuery 事件,可用于在从 DOM 中删除元素之前清理 DOM 绑定。

还:

个人观点:事件会使你的代码很难推理。

于 2016-04-15T00:45:20.113 回答