问题标签 [angular-providers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
151 浏览

angularjs - Angularjs 价值服务&工厂服务

在角度文档中

使用 $injector 注册一个值服务,例如字符串、数字、数组、对象或函数。这是注册服务的缩写,其提供者的 $get 属性是一个工厂函数,不接受任何参数并返回值 service

在粗体文本中$get property is a factory function that takes no arguments,我知道$geta 中的函数将在需要创建实例时angular providers调用,并且它必须在提供程序中具有函数。$injector.invoke()$get

我的问题是关于 的潜在含义是function that takes no arguments什么?

如果有人可以通过将两者与上述文档引用进行比较来描述angular values service&的内部部分,将不胜感激。factory service谢谢。

0 投票
2 回答
813 浏览

angularjs - 创建提供程序以在 angular .config() 中使用

我正在尝试创建一个提供程序以在 .config() 中使用,但不知道我哪里出错了,因为这是我第一次创建提供程序..

实际上想要返回 CacheFactory 提供者的结果 .. 有一个工厂已经在工作,但是在配置中不接受工厂,我有这个问题。

我想在这里使用:

新柱塞: http ://plnkr.co/edit/RVK8EwoyOQNka5E84jSg?p=preview

0 投票
0 回答
230 浏览

angular-material - Angular 材质 $mdthemingprovider 动态主题

我正在尝试放置动态主题,但我不能为 $mdthemingprovider 使用范围和变量。

我认为的方式是提供我的资源的方式,但不知道如何创建一个。

我今天使用了 2 个表单,它们是 $rootScope 和 $cacheFactory,我在其中保存全局变量以在整个应用程序中访问。但是在 $mdthemingprovider 也不接受。

0 投票
1 回答
1054 浏览

javascript - Angular 无法识别提供程序内部的函数

首先是我想要实现的一点背景。我有一项服务需要在注入和使用之前进行一些配置。在做了一些研究之后,我认为拥有该服务的提供商将是最好的解决方案。所以我根据这个例子实现了提供者。即使 Typescript 编译器(我正在使用 typescript 将我的代码编译成有效的 JavaScript)认为没问题,JavaScript 也无法识别可通过提供程序设置某些选项的函数。

我的代码如下所示(某些代码因某种原因被遗漏或重命名)

在我的一个单元测试中使用提供程序(我使用 Karma 和 Mocka 进行测试)并调用该setOptions函数时会出现问题。像这样完成的。

运行此测试时,Karma 会抛出错误消息

TypeError:provider.setOptions 不是 Context 中的函数。[匿名]

此外,已编译的 JavaScript Visual Studio 代码在线上的提供程序变量上给了我一个绿色警告(我不认为这是一个错误).provider('CustomService', CustomServiceProvider);

'() => void' 类型的参数不能分配给'IServiceProvider' 类型的参数。类型“() => void”中缺少属性“$get”。
(local var) CustomServiceProvider: () => void
Providers

我已经花了几个小时来解决这个问题,但似乎找不到解决方案。关于如何解决我做错了什么的任何想法?

提前致谢。

编辑 (30-09-2015)

我正在谈论的服务如下所示:

0 投票
0 回答
38 浏览

javascript - Angular 提供者接受需要依赖的函数

不知道给这个标题是什么,但基本上我有一个我自己创建的授权提供程序,需要在配置阶段进行配置,以便拥有一个 requireLogin() 函数,该函数将在以后运行。像这样...

这是提供者代码

旁注:我使用的是 ng-annotate,所以不要使用 DI 的数组语法。

无论如何,如您所见,存储在配置阶段的函数稍后将使用 $auth.requireLogin.then(...) 等调用。需要访问 angular-ui 模态服务,但是当我调用稍后从提供程序内部的函数显然没有发生 DI 的事情,因为我所做的只是将 $modal 放在我的函数的参数中,这并不神奇。我也不能将 $modal 放在我的提供者的依赖项中,因为这样做还为时过早,而且我的提供者也不知道我传入的函数需要哪些依赖项。

我觉得答案可能是:

A)在我传入的函数中使用注入器来访问 $modal 服务或

B)以某种方式在外部调用时从提供程序内部运行该函数,并以某种方式在运行时注入所有提供的依赖项?

抱歉,如果我无法轻松解释这一点。我试图制作一个 JSfiddle,但无法轻松破解代码。

0 投票
1 回答
58 浏览

angularjs - 在带有提供程序的控制器上使用此 $scope

我正在学习提供者。在我会使用的通用控制器上

并在 HTML

但是......我正在尝试使用此代码进行相同的操作,而且我真的做不到,即使我尝试了所有我“知道”的方式。

这是代码...

我想要的是?使用 THIS 而不是 $scope

是的......它有效,但我想知道是否可以用这个来做到这一点。

谢谢!

0 投票
1 回答
578 浏览

dependency-injection - 如何在基于服务的 Angular2 项目中使用依赖注入

问题

在过去的一周里,我一直在为 Angular2 项目开发身份验证库。这个库主要是基于服务的,几乎可以直接开箱即用。您唯一需要做的就是将它包含在您的应用程序中并为其设置配置对象。

这里的主要服务是 AuthService。此服务包括 Http 和另一个自定义服务。问题是这两个依赖项都需要开发人员指出这些类的提供者。我不确定我是否做对了,但我已经看到了需要导入 HTTP_PROVIDERS 才能使用 Http 的解决方案。

因此,如果我将 AuthService 作为依赖项导入,我仍然需要同时导入 HTTP_PROVIDERS 和自定义服务以使 DI 工作。

这打乱了我对模块易于包含的想法。我只想提供导入 AuthService。

到目前为止我尝试过的事情

首先,我开始阅读一些关于 Angular2 中 DI 的博客。你们中的大多数人可能都知道 Thoughtram 在提供这些信息方面做得很好(也是 EggHead.io)。我最终阅读了这两个帖子:

http://blog.thoughtram.io/angular/2015/05/18/dependency-injection-in-angular-2.html http://blog.thoughtram.io/angular/2015/09/17/resolve-service -dependencies-in-angular-2.html

阅读它们后,我认为解决方案很简单,但一段时间后似乎并非如此。我想我在这里错过了重点。还在以 DI 为主要卖点的 Spring boot 中工作,我没有设法让它工作似乎很奇怪(可能是 Angular2 仍处于 Alpha 阶段且文档稀缺的事实)。

我尝试过的解决方案

所以我尝试了一些我想出的解决方案,但都没有奏效。

提供一个常数

我的第一个想法是查看 HTTP_PROVIDERS 常量,它就像 Http 依赖项的提供者。我最终查看了它的源代码。

https://github.com/angular/angular/blob/b0009f03d510370d9782cf76197f95bb40d16c6a/modules/angular2/http.ts#L151

在那之后,我认为我最好尝试为我自己的班级实现这一点。

完成后,我将它包含在我的引导函数中,之后我遇到了另一个错误。

我花了一些时间试图找出问题所在,但我没能做到。

使用注释

Angular2 中的一项新功能是注解。所以我希望其中之一能够帮助我解决我的问题。和似乎不是我需要的@Component@View我相信他们更多地关注功能性对象的视觉方面(因为视图不是我需要的东西,而是强制性的)。

下一部分看起来很奇怪,因为我找不到这是否是注释(可能不是......)。我试着给@Provider 一个机会。这导致了以下“可能的”解决方案。

这只是给了我另一个错误,但这次它是由 Typescript 编译器抛出的。

无论如何,有人可以帮我解决这个问题。上述解决方案之一是朝着正确方向迈出的一步,还是我做错了什么?

提前致谢。

0 投票
2 回答
1262 浏览

javascript - 如何从 json 文件中读取数据并在 angularJS 中作为字符串或对象返回?

personManagerInstance.getString("firstname",'common','en') 目前我在 ui 中传递直接字符串,但我真正需要的是从 json 文件中读取数据并以字符串形式返回。

personManagerInstance.getString("firstname",'common','en') 方法我需要从 json 文件中读取数据并作为字符串或对象返回?

personManagerInstance.getString("lastname",'registration','en') 此方法基于参数从不同位置读取 json 并以字符串形式返回...

0 投票
2 回答
4508 浏览

angularjs - 未知提供者:$state

您好,我在通过 $injector 服务进行依赖注入时遇到了一些问题。
我是 Angular 的新手,所以我会从 IoC 容器的角度解释我是如何看待这个的。

首先是问题:$injector 无法解析 $state。

核心.js

这是错误:

我认为堆栈跟踪在这里没有太大的相关性......但以防万一我将它发布在问题的底部:

Index.html:我只是想显示我在哪里以及以什么顺序引用我的 .js 文件。

据我了解 Angular 的提供者配方:

如果创建了“$stateProvider”并且可以自行注入它为什么没有向 IoC 注册“$state”服务

编辑:此外,我稍后还有另一个模块接收 $state 服务作为依赖项没有问题。

东西.js

编辑 2:我的错,它在任何配置中都不起作用 VISHAL DAGA是正确的。

堆栈跟踪:

0 投票
1 回答
3176 浏览

angularjs - 如何模拟单元测试的配置阶段提供程序?

我正在编写一个规范,检查在被测 Angular 模块的配置阶段调用的方法。

下面是正在测试的代码的简化视图:

上面发生的事情是我们定义了一个core具有单个依赖项的模块。
然后,在模块的config-block 中core,我们调用给定对象deferIntercept上的方法configAction来使用 from services.configAction

我正在尝试测试它core的配置调用该方法。

这是当前的设置:

问题在于它不会覆盖configAction,因此永远不会调用间谍,原始方法是。如果我将其作为模块
的依赖项删除,它将这样做,因此不会起作用并调用 spy 。coreangular.module('core',[])angular.module('core',['services.configAction'])

知道如何services.configAction在测试期间覆盖而不将其从依赖项列表中删除吗?