我有自己的指令:< form-wrapper>
现在,该指令使用自己的内部控制器,使用一些服务(用户服务)
喜欢这个:
directives.directive("formWrapper",['User',function(User) { return { ... controller: function($scope,$location,User) { $scope.fields = User.get( {id: "1"} ); // GET ...
你可以看到:我使用硬编码的服务(用户).
问:我如何通过服务作为指令的参数?要这样使用:
Service = comesFromArgument $scope.fields = Service.get( {id: "1"} )
我想如果我将服务名称作为字符串(作为服务名称)传递给它将不会有帮助.传递参数通常发生在链接功能中,但不在控制器中.
更新(更多解释):
当使用directives.directive(“formWrapper”,[‘User’,function(User){名称’User’导致注入用户服务时),因为这是IoC如何在这里工作的方式,我猜,它知道这是一个服务但是如果我做到了:
< form-wrapper service =“User”> //这是我想要的
然后,“User”将只是一个字符串,而不是引用User服务.
您可以使用
angular’s
$injector
service为控制器中的字符串注入服务.
在HTML中:
<form-wrapper my-attr-with-service="User"> ... </form-wrapper>
在指令定义中:
controller: function ($scope,$element,$attrs,$injector) { var myService = $injector.get($attrs.myAttrWithService); // ... }