2016-10-09 127 views
0

我正在開發一個AngularJS項目。我使用和$ locationProvider.html5mode()從URL中刪除了#。在角度應用程序中動態設置基址URL

根據環境的不同,我希望基本標籤的href屬性可以從配置文件動態更新。我創建了一個包含簡單配置的env.js。

env.js

(function (window) { 
    window.__env = window.__env || {}; 

    window.__env.baseUrl = '/'; 

    window.__env.enableDebug = true; 
}(this)); 

我env.js.用這個ENV文件在我app.js和內部app.run()更新$ rootScope.baseurl到的baseUrl它在console.log()內工作正常,但不在我的index.html中。我收到未編譯的代碼,即{{ $rootScope.baseurl }}

app.js

import controllers from './controllers'; 

     var env = {}; 

     if (window) { 
      Object.assign(env, window.__env); 
     } 

     var app = angular.module('myapp', ['ui.router', controllers]); 

     app.constant('__env', env); 

     app.config(function ($stateProvider, $urlRouterProvider, $locationProvider) { 

      $urlRouterProvider.otherwise("/"); 

      $stateProvider.state("home", { 
       url: "/", 
       templateUrl: "app/components/home/home.view.html", 
       controller: "HomeController" 
      }).state("login", { 
       url: "/login", 
       templateUrl: "app/components/login/login.view.html", 
       controller: "LoginController" 
      }); 

      $locationProvider.html5Mode({ 
       enabled: true, 
       requireBase: true 
      }); 
     }); 

     app.run(function($rootScope, __env){ 
      $rootScope.baseurl = __env.baseUrl; 
      console.log($rootScope.baseurl); 
     }); 

的Index.html

<html ng-app="myapp"> 
     <head> 
      <title>MYAPP</title> 
      <base href="{{ baseurl }}"> 
     </head> 

     <body> 
      <div ui-view> 
      </div> 
     </body> 

     <script type="text/javascript" src="public/lib/js/angular.min.js"></script> 
     <script type="text/javascript" src="public/lib/js/angular-ui-router.min.js"></script> 
     <script type="text/javascript" src="env.js"></script> 
     <script type="text/javascript" src="public/app.js"></script> 

    </html> 

請幫助我。由於

回答

2

,因爲它需要的任何請求,因爲您使用相對路徑

你可以嘗試更換爲網頁資源,如腳本,樣式表,圖像等之前,需要先設置您不能使用的角度來設置它<base>喜歡的東西:

<script type="text/javascript" src="env.js"></script> 
<script> 
     document.write('<base href="' + window.__env.baseUrl + '" />'); 
</script> 

或者

<script type="text/javascript" src="env.js"></script> 
<base id="base"> 
<script>   
    document.getElementById('base').href = window.__env.baseUrl; 
</script> 
相關問題