2014-11-13 44 views
0

在我的角度的应用程序中,我有一个URL连接到检索一些数据,启用CORS的服务器。我在哪里把配置在angularjs应用程序?

现在,到目前为止我有它硬编码在我的JavaScript文件:现在

server_url = "http://localhost:7888/api.php/json?id=2" 

,在测试和生产的,当然这些网址是无效的......每次我做一个git pull它会覆盖我的自定义。

我在哪里可以优雅地将这样的配置放在角度应用程序中?

+0

你对你的后端使用的是什么? –

+0

我认为这可以通过混合你的中间件和你的前端完成,看看meanjs.org的方法,http://meanjs.org/generator.html#overview –

+0

你可能想看看使用像Grunt根据环境将URL添加到您的JS。 –

回答

0

将其声明为常量。假设你有一个应用程序命名为App

angular.module('App', []).constant("urls", {"server_url":"http://localhost:7888/api.php/json?id=2"});

一旦声明为常量,你会注入它作为一个依赖,就像你的服务。

+0

你如何覆盖它取决于目标环境? –

+0

不要注入它并声明一个新的值。 –

+0

你可以注入URL没有任何伤害,但该URL最终会根据目标环境而改变,你仍然可以注入它,但使用不同的值 –

0

好吧,基本上我会在这里采用一个mean.js方法,它很容易实现,它可能对你或任何其他人有用。

你必须从你的中间件写入你的主HTML文件(例如:index.html),在你的情况下,端点的URL必须根据你的环境而改变,只是为了保持简单让我们说我们有dev本地主机)和生产(mydomain.com)

索引中的HTML

做一个简单的写:

<script type="text/javascript"> 
     <?php 
     if(strpos($_SERVER['HTTP_HOST'], 'mydomain.com') !== false){ 
      print "var endpoint = '"+ $server_url+ "';" 
     } else{ 
      print "var endpoint = '"+ $local_url+ "';" 
     } 

     ?> 
    </script> 

一个你得到了到主index.html的它在角可通过窗口对象,所以你可以把它换成一个常量或者一个service

这是一个恒定的例子:

angular.module('app').run(function() { 

}).value('endpoint', window.endpoint); 

我不精通PHP,但我希望你能明白我的意思

相关问题