使用值在AngularJs app中在运行时期间动态设置服务器URL

时间:2015-10-01 12:35:00

标签: angularjs server

我有本地和在线托管的应用程序。 我有很多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。所以价值不会改变。 创建时,如何更改值以及何时动态更改值,因此在视图加载期间每个控制器注入的值都可以吗?

1 个答案:

答案 0 :(得分:1)

在您的示例中,urlPath是标量。这意味着

urlPath = ...

分配给本地变量,而' urlPath'服务保持不变。使用

.value('urlPath', { url: 'http://online-website:8888/' })

urlPath.url = ...

代替。