我对Angular很新。我看到有一个名为$injector
的东西,它的功能get
,我可以用来获得特定的服务。例如:
app.factory('$myService', function($injector) {
return { ...
var http = $injector.get('$http');
....
}
}
我将获得Angular的$http
服务到变量http
。
在其他示例中,我看到类似
的内容app.factory('$myService', function($http) {
return {...}
这也将$http
服务注入工厂。
这两者有区别吗?我什么时候应该使用这个或那个?
谢谢!
答案 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