Angular $ injector与角度依赖注入

时间:2017-01-18 16:11:50

标签: javascript angularjs

我对Angular很新。我看到有一个名为$injector的东西,它的功能get,我可以用来获得特定的服务。例如:

app.factory('$myService', function($injector) {
   return { ...
            var http = $injector.get('$http');
            ....
   }
}

我将获得Angular的$http服务到变量http

在其他示例中,我看到类似

的内容
app.factory('$myService', function($http) {
    return {...}

这也将$http服务注入工厂。

这两者有区别吗?我什么时候应该使用这个或那个?

谢谢!

2 个答案:

答案 0 :(得分:2)

是否相同,请使用您喜欢的那个。

在我看来,直接注入您的依赖项(此处为$http )更易于阅读。

请注意,您还可以使用$inject注释:

someModule.controller('MyController', MyController);
MyController.$inject = ['$http'];

var MyController = function($http) {
    // ...
}

答案 1 :(得分:0)

它们大致相同,但你如何使用它们有所不同。在您知道提前要求的典型控制器中,通常更好地进行基于参数的注入:

package main import ( "fmt" ) type Foo struct { num int str string } func main() { foo := &Foo{42, "Hello"} // struct with fields of many types... for _, data := range []interface{}{foo.num, foo.str} { fmt.Println(data) } }

但是,如果你正在做一些更复杂的事情并且你不知道你可能拥有的所有依赖项(例如创建一个允许用户指定依赖项的子框架),你可能希望能够以编程方式注入您与var controller = ['$http', function($http){ /* Controller stuff here */ }];的依赖关系:

$injector