Angular如何从服务中控制指令?

时间:2014-11-17 10:13:36

标签: angularjs

我试图做一个控制指令的服务。

因此,目的是使用控制器中的服务来要求指令做某事。

例如。 SomeService.tellSomething('ok');将使用参数

触发指令

我知道我们可以使用$rootScope.$broadcast发送/触发事件,但老实说,我不知道这是不是一个好习惯......

任何建议/技巧?

2 个答案:

答案 0 :(得分:3)

您可以使用发布/订阅模式。例如:

向您的服务添加subscribeToTellsomething方法。将您的服务作为依赖项注入指令,并使其指令在链接时订阅它(链接方法)。现在,当调用tellSomething方法时,让服务向所有订阅者发布内容。

答案 1 :(得分:2)

你也可以使用手表模式,pub / sub方法也是可行的,但它更有效,我认为$ broadcast实际上是在幕后使用相同的模式,但不要引用我

手表的方法是这样的:

MyService.getSomething = function() 
    {
      return something;
    }

在你的指令中:

$scope.$watch(function() {
      return MyService.getSomething();
     }, function(newSomething) {
         //do your thing
     });