我有本地和在线托管的应用程序。 我有很多api调用,我们需要更改url的前缀。 我设置了值 url ,并且两个网址都已找到,一个在本地需要,一个在线。 所以我有:
//.value('urlPath', '')
.value('urlPath', 'http://online-website:8888/')
在此配置中,有一个和第二个注释。 我的问题是,如何动态更改urlPath,因此开发人员无需在每次部署到服务器时进行注释和取消注释。 我知道我可以使用$ location服务,如果没有,我可以使用javascript raw函数来确定网站所在的主机。 所以我可以这样做:
var host = $location.host();
if ( host.indexOf("online-website") > -1)
//set value to online-website;
else
//set value to localhost
我假设我可以在开始时以某种方式使用此代码段,例如.run模块方法。 但是如何通过有条件地设置Angular的值来实现这一目标呢? 我的问题是,如果值有方法动态设置它的值,如何引用它?或者是否有另一种解决方案,除了创建服务或继承控制器。 我有很多使用价值对象的控制器,所以最好的解决方案是有价值的。
另外,如果不可能,那么值和常数之间有什么区别?
我想在run方法中动态设置它。它是在定义值后定义的。 我通过以下方式动态设置值:
var host = $location.host();
console.log('host is: ',host);
if ( host.indexOf("website-online") > -1)
{urlPath = '';console.log('1');}
else
{urlPath = 'http://website-online:8888/';console.log('2',urlPath);}
在localhost控制台日志2和网站在线,但api调用将转到localhost。所以价值不会改变。 创建时,如何更改值以及何时动态更改值,因此在视图加载期间每个控制器注入的值都可以吗?
答案 0 :(得分:1)
在您的示例中,urlPath
是标量。这意味着
urlPath = ...
分配给本地变量,而' urlPath'服务保持不变。使用
.value('urlPath', { url: 'http://online-website:8888/' })
和
urlPath.url = ...
代替。