【问题标题】:Setting server url dynamically during runtime in AngularJs app using value在运行时在AngularJs应用程序中使用值动态设置服务器url
【发布时间】:2015-10-01 12:34:59
【问题描述】:

我有本地和在线托管的应用程序。 我有很多 api 调用,我们需要更改 url 的前缀。 我已经设置了两个 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

我假设我可以在开始时以某种方式使用这个代码 sn-p,就像在 .run 模块方法中一样。 但是如何通过有条件地设置 Angular 的 Value 来实现呢? 我的问题是,如果 value 有方法来动态设置它的值,如何引用它?或者是否有其他解决方案,除了创建服务或继承控制器。 我有很多使用值对象的控制器,所以最好的解决方案是使用值。

另外,如果不可能的话,value和constant有什么区别?

我想在运行方法中动态设置它。它是在定义值之后定义的。 我通过以下方式动态设置值:

   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。所以价值没有改变。 什么时候创建的,如何动态改变值,什么时候动态改变,所以在视图加载时在每个控制器中注入值就可以了?

【问题讨论】:

    标签: angularjs server


    【解决方案1】:

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

    urlPath = ...
    

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

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

    urlPath.url = ...
    

    改为。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-07
      • 2015-10-14
      • 1970-01-01
      • 2012-05-16
      相关资源
      最近更新 更多