gpt4 book ai didi

javascript - 如何覆盖/更改值提供者的 AngularJS 值

转载 作者:数据小太阳 更新时间:2023-10-29 06:06:25 24 4
gpt4 key购买 nike

我想覆盖值-

angular.module("data", []).value('apiBase', '/api1/data')

在运行时,我尝试修改它-

angular.module("data").value('apiBase', '/someotherapi/data')

在某些服务/ Controller 中,但它失败了,它没有覆盖 apiBase 的值。

我试图在我的 Controller 中注入(inject) apiBase 并更改它。

angular.module('data').controller(function(apiBase){apiBase = '/someotherapi/data'})

它失败了。

然后我尝试将 apiBase 定义更改为类似

的对象
angular.module("data", []).value('apiBase', {"api_base_url":"/api1/data"})

然后在 Controller 中修改它:

angular.module('data').controller(function(apiBase){apiBase.api_base_url = '/someotherapi/data'})

它有效。所以我的问题是:为什么 angular.module('data').value('samekey', 'newvalue') 不能覆盖值?当它只是一个字符串/数字(主要类型。第二次尝试)时,为什么不能修改该值。在我看来,Value 提供者是单例的,它应该改变。

最佳答案

请阅读有关如何 dependency injection 的文档在 AngularJS 中工作。

基本上,AngularJS 应用程序的创建分为两个阶段 - 配置阶段运行阶段。所有配置代码,例如使用特殊的 $provide 服务注册 .value(),都是在配置阶段完成的。一旦该阶段结束,就无法再进行配置,运行阶段开始,您的主模块将引导到 DOM,实例化 Controller 和服务等。这允许依赖注入(inject)在一种理智的、确定性的方式(通过其 ID 请求可注入(inject)物总是为相同的 ID 返回相同的东西)。

关于javascript - 如何覆盖/更改值提供者的 AngularJS 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27122761/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com