【发布时间】:2016-06-12 10:47:36
【问题描述】:
我是 Angular 的新手,我目前了解服务、工厂和提供商之间的区别。但是,在理解 module.provider() 函数时,我陷入了困境。有很多教程解释了 service、factory、provider 方法之间的区别。我读了很多,但是我没有找到任何教程解释 module.provide() 方法的详细信息,也没有找到任何同时提到这两种不同方法的教程。
我从文档中了解到提供者是一个可配置的工厂。这是一个例子(http://blog.xebia.com/differences-between-providers-in-angularjs/):
var app = angular.module('app', []);
app.provider('movie', function ()
{
var version;
return {
setVersion: function (value) {
version = value;
},
$get: function () {
return {
title: 'The Matrix' + ' ' + version
}
}
}
});
app.config(function (movieProvider) {
movieProvider.setVersion('Reloaded');
});
在继续研究 module.provider() 之后,我发现了一个不同的实现。这是示例(http://tylermcginnis.com/angularjs-factory-vs-service-vs-provider/):
我想了解这些背后的逻辑,而不是去死记硬背。在第一个示例中,提供者看起来像一个工厂。它返回一个包含 $get() 方法的对象。我从中了解到提供程序函数被调用并在需要时返回一个像工厂这样的对象。
在第二个中,它看起来像一个服务,因为一个名为 thingFromConfig 的属性和 $get() 方法是使用这个关键字设置的。我从中了解到提供程序函数是使用 new 关键字调用的,它会在需要时返回一个类似服务的对象。
哪一个是正确的?我们如何理解 module.provide() 的这两种不同的实现方式?
第二种情况,provider()方法中的this关键字和this.$get()方法中的this关键字分别指的是什么?
【问题讨论】:
标签: javascript angularjs