$ route取决于当前的URL($ location)

时间:2016-10-13 08:20:20

标签: javascript angularjs rest symfony route-provider

在我的angularJS应用程序中,我使用symfony作为其余API。

根据我当前的网址,我是否在app_dev.php下使用$ http。 我用以下代码意识到了这一点:

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;
    });
}

这很好用。但.run()在.config()之后运行,并且无法将其集成到routeProvider中。

任何人都可以帮我将其整合到我的routeProvider

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

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

2 个答案:

答案 0 :(得分:1)

您应该使用<base>标记为您的应用设置基本网址,并将您的基础设置为&#34; /&#34;或&#34; /app_dev.php /&#34;取决于您的Symfony环境,使用TWIG帮助程序来处理环境。您可以将此用于&#34; app_test.php&#34;同样。

<base href="{{ path('homepage') }}">

有了这个,您的整个应用程序将只适用于该基本URL,您不再需要任何其他内容。

此处ngRoute set base url for all routes

详细介绍了基本HTML5标记如何与AngularJS应用程序配合使用

答案 1 :(得分:0)

如果我在Angular部分使用普通JS,我可以从那里使用这个变量。 以下代码为我工作:

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'
            }).
}