Angular JS工厂vs服务vs提供程序示例

沙兹

我知道这个问题已经提出并给出了答案。但是我通过实际的例子学习得最好,并且遇到了一些我不完全理解的代码。

我指的是Angular Strap,它是一组用于酷用户交互的出色指令:http : //mgcrea.github.io/angular-strap/

我正在查看工具提示功能的代码,发现作者正在使用提供程序来公开功能。他还能使用服务或工厂来完成相同的工作吗?还是需要提供者?

这是代码的链接:https : //github.com/mgcrea/angular-strap/blob/master/src/tooltip/tooltip.js#L28

谢谢

Hylianpuffball

简短答案:作者选择提供程序将默认值设置为“只读”。如果他们使用Provider,则该代码仍然可以使用,但是Provider更干净,更“安全”

ProviderServiceFactory在Angular中都是相同的基本东西,只是使用了不同的API;Provider可以有点被认为是“基础”元件,但它们都具有相同的最终目的:创建一个角可注射的。这些注射剂都有一个提供者,提供者提供了蓝图(Angular查找$get方法),以及提供者生成的Singleton实例。如果您使用FactoryService,则Angular确实会在幕后工作,因此您无需了解所有细节。您只会觉得非常无聊Provider,只做基础操作。但是,如果您使用Provider自己,则可以在声明中添加额外的属性和函数。

您可以注入Providers模块的config()方法,该方法在创建任何Singleton之前运行。尝试在此处查找更详细的说明。

在AngularStrap中,作者在提供程序上放置了一个“默认”对象。作者希望您在模块的config()方法中修改该对象,然后Angular会生成Singleton。但是,“默认值”对象不在Singleton上,因此一旦应用程序“运行”后就无法更改默认值即使您在Provider某个地方再次注入并再次更改了“默认值”,Angular也不会重新制作您的Singleton,因此默认值实际上变为“只读”。这是防止代码进行不必要的更改的好习惯,尤其是当您在同一代码中有多个人,或者您知道其他人将使用您的模块时。

您可能会看到其他无法正常工作的代码...也许另一个应用程序仅使用factory,并将“默认值”对象放在该工厂上。它仍然可以“工作”,并且代码看起来很像当前。但是,由于“默认值”将直接放在Singleton上,因此,如果有人编写代码来执行此操作,则您的代码可以随时更改这些设置现在,您需要留下注释和文档,说明何时更改默认值,何时不更改默认值等等。在99%的情况下,应用程序运行后就无需更改默认值,因此使用Providermodule.config()安全且直接。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Angular工厂和未知提供程序错误

来自分类Dev

引导vs @component中的Angular2提供程序

来自分类Dev

将angular js服务/工厂注入Jasmine

来自分类Dev

Angular JS $ watch vs $ on

来自分类Dev

Angular2引导提供程序vs在组件中提供数组

来自分类Dev

如何监视Angular提供程序的工厂方法?

来自分类Dev

Angular JS $超时vs $间隔

来自分类Dev

Angular.js服务/带有可重用数据的工厂

来自分类Dev

工厂服务中的Angular Js事件/侦听器

来自分类Dev

如何在Angular JS的工厂/服务中使用$ cookie?

来自分类Dev

Angular.js服务/带有可重用数据的工厂

来自分类Dev

Angular.js在服务/工厂内部获取输入数据

来自分类Dev

Angular2没有提供服务错误的提供程序

来自分类Dev

如何在Angular.js中正确配置提供程序服务

来自分类Dev

Angular.js:配置使用提供程序中的服务的回调的好方法

来自分类Dev

Angular.js:配置在提供程序中使用服务的回调的好方法

来自分类Dev

如何在Angular.js中正确配置提供程序服务

来自分类Dev

Angular JS正确的工厂结构

来自分类Dev

angular.js工厂变量

来自分类Dev

这个vs $ scope在angular.js中?

来自分类Dev

趋势分析-Angular Js vs JQuery

来自分类Dev

使用Angular Seed注入服务-“未知提供程序”错误

来自分类Dev

使用Angular Seed注入服务-“未知提供程序”错误

来自分类Dev

使用 Django 为 Angular 应用程序提供服务

来自分类Dev

Angular JS UI示例应用程序无法正常工作

来自分类Dev

注入Angular工厂和服务的问题

来自分类Dev

如何在Angular js中为Signup表单提供服务

来自分类Dev

Angular JS-提供程序与控制器

来自分类Dev

Angular.js健全性检查:服务与工厂与控制器... +指令+行为

Related 相关文章

热门标签

归档