0

我正在研究使用 AngularJS 作为以声明方式定义 Web 组件的框架的可能性(尽可能避免对控制器的需要)。所需的大部分功能已经可以通过 Angular 的内置指令实现,但是我还希望能够迭代用于异步请求数据的各种服务的结果。

我需要的功能可以通过将服务注入控制器并将结果存储在范围内来轻松实现,但我希望有一种方法可以实现这一点而根本不需要控制器(具体来说,我希望生成模板而不是手写)。

是否有任何内置方法可以在 Angular 中实现这一点(例如,一种包含对重复表达式的服务调用的方法)?如果不是,那么实现这一目标的最有效方法是什么?我会假设我应该能够创建一个引用服务的新指令,但我不确定这是否是实现这一目标的正确方法。

4

1 回答 1

2

要制作通用指令,其中可以在 HTML 中声明服务而不是作为指令定义的一部分注入,可以使用 $injector:

<some_element ... my-directive service="myService">

指示:

myApp.directive('myDirective', function($injector) {
    return {
       link: function(scope, element, attrs) {
          var service = $injector.get(attrs.service);
          service.someMethod();
          ...
       }
    }
});

注意:我还没有测试上述技术是否真的有效,但我已经尝试过使用控制器的技术并且它有效。

要使这项技术有用,您显然必须提出一个静态服务 API,并且只能使用使用该 API 的服务。

于 2013-02-06T16:09:06.187 回答