我试图做一个控制指令的服务。
因此,目的是使用控制器中的服务来要求指令做某事。
例如。 SomeService.tellSomething('ok');
将使用参数
我知道我们可以使用$rootScope.$broadcast
发送/触发事件,但老实说,我不知道这是不是一个好习惯......
任何建议/技巧?
答案 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
});