如何启动独立的角度服务

时间:2014-01-28 21:53:31

标签: angularjs angularjs-service

我有一项服务,可以在根镜上观察某些内容并做出回应。没有其他人要求该服务作为依赖。如何告诉服务开始做它的事情?

这就是我现在的做法。

angular.module('app')
.service('myService', function ($rootScope) {

  return function () {
      $rootScope.$on("...", function () {
        //do stuff
      });
    };

})
.run(function (myService) {
  myService();
});

有更简洁的方法吗?

1 个答案:

答案 0 :(得分:0)

我已经实现了类似的东西,但使用的是指令,而不是服务:

app.directive('myDirective', function() {
  return {
    controller: function($scope) {
      $scope.$on('myEvent', function () {
         // Do stuff
      });
    }
  }
});

然后在我的应用程序的根元素中使用它,例如,可以body

<body ng-app="app" my-directive>

以这种方式对服务使用指令的好处在于它使得它不那么全局/最终。例如,如果您最终希望某些范围无法向此处理程序发送$emit个事件,则可以将myDirective移动到另一个元素。或者你可能希望你的应用程序的一部分对myEvent的响应略有不同,所以你可以添加另一个myDirective实例,也许可以通过属性传递一些选项。总的来说,它使得增加复杂的行为更加开放。