2016-10-13 4 views
1

In meiner angularJS App verwende ich symfony als Rest API.

Abhängig von meiner aktuellen URL verwende ich die $ http unter app_dev.php oder nicht. Ich erkannte dies mit dem folgenden Code:

app.run (function($rootScope, $location){ 

    $rootScope.dev = ""; 
    if ($location.absUrl().search("app_dev.php") > 0) { 
     $rootScope.dev = "app_dev.php/"; 
    } 
} 

app.controller('OfferIndexCtrl', function($scope, $http, $location, $filter, $rootScope){ 

    $http.get($rootScope.dev + 'stage/offer/get').success(function(json){ 
     $scope.offerList = json.offerList; 
    }); 
} 

Dies funktioniert gut. Aber die .run() läuft nach .config() und es ist nicht möglich, sie in den routeProvider zu integrieren.

Kann mir jemand helfen diese in meine routeProvider zu integrieren

app.config(['$routeProvider', '$locationProvider', 
     function($routeProvider, $locationProvider){ 

      $routeProvider. 
       when('/', { 
        templateUrl: 'stage/view/offer/index', 
        controller: 'OfferIndexCtrl' 
       }). 
       otherwise({ 
        redirectTo: '/' 
       }) 
     } 
]); 

Antwort

1

Sie <base> Tag Basis-URL für Ihre App zu setzen, und stellen Sie Ihre Basis „/“ oder „/app_dev.php/“ verwenden sollten, Abhängig von Ihrer Symfony-Umgebung, verwenden Sie TWIG-Helfer für die Umgebung. Sie können dies auch für "app_test.php" verwenden.

Damit funktioniert Ihre ganze Anwendung nur auf dieser Basis-URL, Sie brauchen nichts mehr.

Wie Basis HTML5-Tag mit AngularJS Anwendung funktioniert wird hier im Detail beschrieben ngRoute set base url for all routes

0

Wenn ich Ebene JS bin mit dem vor dem Angular Teil I diese Variable von dort nutzen kann. Der folgende Code funktionierte für mich:

var dev = ""; 
if (location.pathname.search("app_dev.php") > 0) { 
     dev = "app_dev.php/"; 
     console.log("App läuft unter dev"); 
} 

App.config(['$routeProvider', '$locationProvider', 
    function($routeProvider, $locationProvider){ 

     $routeProvider. 
      when('/', { 
       templateUrl: dev + 'stage/view/offer/index', 
       controller: 'OfferIndexCtrl' 
      }). 
} 
Verwandte Themen