我有一项服务,可以在根镜上观察某些内容并做出回应。没有其他人要求该服务作为依赖。如何告诉服务开始做它的事情?
这就是我现在的做法。
angular.module('app')
.service('myService', function ($rootScope) {
return function () {
$rootScope.$on("...", function () {
//do stuff
});
};
})
.run(function (myService) {
myService();
});
有更简洁的方法吗?
答案 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
实例,也许可以通过属性传递一些选项。总的来说,它使得增加复杂的行为更加开放。