问题标签 [angularjs-provider]
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.
angularjs - AngularJS - 从外部污染提供者、服务和工厂
我无意中用我认为我只分配给范围的属性污染了服务。例子:
这是一个 Plunker 来演示这种行为:
https://plnkr.co/edit/nDkNfKmQRtcBuJ0NUcHo?p=preview
我知道在将对象传递给函数时,JavaScript 是通过引用传递的。除非这些对象被深度克隆。
我曾假设服务之外的某些东西可以访问该服务公开的对象等,但只能通过值访问,并且对该服务的任何更改都必须由该服务提供的 api 完成。似乎唯一的方法是angular.copy
在上面的例子中使用 egtestCtrl.testService = angular.copy(testService);
我猜这一定是预期的行为。如果是这样,除了性能优势之外,我认为这是一个缺点。
为什么 AngularJS 允许这种行为而不是“黑盒”提供者?
javascript - 角度提供者错误 - 必须定义 $get 工厂方法
此咖啡脚本代码正在尝试创建一个角度提供程序,但我收到此消息:提供程序 'ItemsProvider' 必须定义 $get 工厂方法。
我设置了 $get 方法。知道发生了什么吗?
它无法加载此消息:
编辑: 这是生成的 javascript:
angularjs - Angularjs:在不同模块中使用公共服务
我正在尝试对不同的模块使用相同的服务。有很多模块,所以我尝试将它们注入到父模块中。像这样的东西:
所有n个模块共有的服务是这样的:
现在我无法弄清楚如何为所有子模块使用此服务。我应该将此服务
与哪个模块关联?
我试过做,但没有用。
我哪里错了?app.service('myService',function(){...})
编辑 1:
此外,我正在尝试使用service与所有这些子模块共享一个变量。我不确定我是否通过使用共享变量的服务来做正确的事情,或者我是否应该使用提供者或工厂来完成这项工作。
编辑 2:
我找到了这些链接,但我无法掌握答案。参考他们并请提供我的答案
如何在AngularJS中的多个模块之间共享变量
在不同模块上的控制器之间传递变量
angularjs - 将解析与 angularjs 组件一起使用
我正在尝试在呈现页面之前解析客户列表。
这是状态提供者参考,我有解决方法。
其次是组件,它应该从resolve中调用#test。它应该做的就是在控制台上打印“nihao”这个词。
但是,我不断收到此错误:
我可以看到它正在运行解析函数,所以它可以工作,但它不会注入方法!有任何想法吗?
angularjs - AngularJs注入提供者错误
我正在尝试注入两个提供程序,但出现错误:
错误:[$injector:modulerr] 无法实例化模块应用程序,原因是:[$injector:unpr] 未知提供者:$paginationTemplateProvider
这是我的代码:
你知道有什么问题吗?
angularjs - AngularJS服务在通过provider使用时无法访问自己的功能
这是我的提供者:
这是我的示例服务:
现在,当我在控制器中使用提供程序时,一切正常,但是当在上面_this.doLogin()
的函数中从服务内部调用时checkLoginStatus
,我得到错误,即doLogin未定义。但是,如果我使用_this.login()
,它可以工作,因为此函数是通过提供程序返回的。如何使服务功能直接相互访问?
编辑:我知道this
回调的变化范围,以及如何在这种情况下使用它。我的问题是在我的问题中提到的情况下我应该使用什么,因为通过控制器内部的提供者调用服务方法,this
即使在服务本身中调用服务功能,也会将范围转移到提供者的范围?
angularjs - Angular + 响应标头 - 无法从 $http 提供者访问响应标头
我试图通过 $http 提供程序访问响应标头但没有成功。在我的研究中,我读到这是一个 CORS 问题。但这没有任何意义,因为阅读 GoogleChrome 检查器(网络部分)中的标题,标题就在那里。代码:
有什么我可以做的吗?我正在考虑将 $http 更改为 $ajax。备择方案?
谢谢!
javascript - JavaScript - 调用在提供程序中定义的函数
我最近开始开发使用 AngularJS 编写的 Web 应用程序。在其中一个文件中myApp.js
,有一个provider
定义如下:
在网站上的大多数页面上,都有一个“设置”按钮,它会打开一个对话框,用户可以使用该对话框更改给定页面的设置。我已经在该对话框中添加了一个复选框,该对话框在检查时,我想用它来设置将其选中为“主页”页面的页面,覆盖以前是“主页”页面的页面。如果/当再次取消选中该复选框时,应将主页设置回其原始值(即在 中/alarms
确定的页面constants
)。
就目前的情况而言,我已设法更改主页,以便将其更新为用户选择的页面 - 当单击“主页”时,它们将被带到选中复选框的页面。但是一旦他们退出,他们选择的主页就被忘记了,当他们再次登录时,默认主页是他们的主页,直到他们选择另一个。
我现在想将用户的默认主页设置为他们选择的自定义主页,并尝试使用provider
上面函数中定义的“常量设置器函数”。
我通过调用:
当在对话框上按下“确认”按钮时(选中“设置为主页”复选框)。
但是,当我按下“确认”按钮时,我的TypeError
控制台中会显示:
我不明白为什么会出现此错误... setConstant()
被定义为具有以下功能的函数:
那么为什么控制台说它不是一个函数呢?我怎样才能解决这个问题?
编辑
我正在调用myAppConf.setConstant()
的函数在 Pages/ctrls.js 中定义如下:
angularjs - 使用 $sce 中的 $sceProvider 功能
从 Angular 文档中它说$sceDelegateProvider.resourceUrlWhitelist
可以设置受信任的资源 URL,但我需要来自控制器的功能。
我想在我的服务中设置可信资源 URL 的白名单。因此,我只被允许使用$sce
服务而不是提供者..
我试图实现这个例子,它给我带来了一个错误(“$sce:unsafe Require a safe/trusted value”):
this.renderUrl = this.$sce.getTrustedUrl(
${this.baseUrl}
) + `/x/y/?name=${this.name};
然后将 注入renderUrl
到 html 中:
有没有办法从$sce
服务中设置受信任的资源 URL,以便将其添加到受信任的资源 URL 的白名单中?
angularjs - 打字稿无法识别 angularjs 提供程序 $get 方法上的接口
好的,所以我想要一个提供者,它可以让我关闭状态提供者的引用。所以,我有 JS 代码,我正在尝试将它迁移到 TS。这是我到目前为止所得到的,但由于某种原因,它一直抱怨没有这样的方法(属性'get'在类型'IReferenceProvider'上不存在。尝试将接口更改为'IReferenceProviderGetterInterface''get'方法似乎做得很好,但我失去了看起来不正确的“injectRef”方法,所以我相信我把接口放在了正确的位置)。任何人以前都遇到过这个问题,很高兴指出我做错了什么。尝试用谷歌搜索这个问题,但据我所知,一切似乎都还不错。无论如何,这里是片段:
我使用它的方式是: