为什么服务,常数等需要注入?

时间:2015-07-24 16:24:21

标签: javascript angularjs dependency-injection

我们说我创建了一个AngularJs服务。我把它附在我的模块上:

angular.module('fooModule').service('myService', function(){
    var service = {
        logSomething: function() {
            console.log('Service logged something');
        }
    };
    return service;
});

无论。它在那里 - 与常量,工厂,提供商等相同。为什么我需要将此服务,常量等注入我的控制器?它与"使用"基本上是相同的原则吗?在C#中 - 唯一的目的是避免冲突的变量/函数名称?这似乎没有意义,因为我仍然需要编写myService.logSomething()来清除整个命名空间问题。

还是以某种方式加快加载?我不知道那会是怎样的。

1 个答案:

答案 0 :(得分:1)

你还没有把这项服务注入任何东西;在这一点上它只是一个单身人士。您已经使用角度模块进行了注册,是的,但模块中没有任何其他内容可以识别它。直到你真正注射它才能使用它。以非常抽象的方式,您可以考虑Angular中的依赖注入,如usingimport,但它更像是在构造函数中提供初始化变量(实际上,这正是它的本质)。

如果您想知道为什么依赖注入可能是一般的好设计实践,this post should be of interest to you