gpt4 book ai didi

Angular JS。将服务作为参数传递给指令

转载 作者:行者123 更新时间:2023-12-04 00:35:17 24 4
gpt4 key购买 nike

我有自己的指令:<form-wrapper>
现在这个指令使用它自己的内部 Controller ,它使用一些 Service ( User 服务)

像这样:

 directives.directive("formWrapper", ['User',  function(User) {
return {
...
controller: function($scope, $location, User) {

$scope.fields = User.get( {id: "1"} ); // GET
...

如您所见:我使用 硬编码 服务 ( User)。

问题:我如何将 Service 作为参数传递给指令?像这样使用它:
  Service = comesFromArgument
$scope.fields = Service.get( {id: "1"} )

我想如果我将服务名称作为字符串(作为服务名称)传递它将无济于事。传递参数通常发生在 link-function但不在 Controller 中。

更新(更多解释) :

使用时 directives.directive("formWrapper", ['User', function(User) {名称“用户”导致注入(inject)用户服务,因为我猜这就是 IoC 的工作方式。它知道这是一项服务。但如果我这样做了:
<form-wrapper service="User"> //这就是我要的。

那么,“用户”将只是一个字符串,而不是对用户服务的引用。

最佳答案

您可以使用angular's $injector service在 Controller 中注入(inject)给定字符串的服务。

在 HTML 中:

<form-wrapper my-attr-with-service="User">
...
</form-wrapper>

在指令定义中:

controller: function ($scope, $element, $attrs, $injector) {
var myService = $injector.get($attrs.myAttrWithService);
// ...
}

关于 Angular JS。将服务作为参数传递给指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20033493/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com