2013-06-10 3 views
11

私のアプリケーションはTomcatにアプリケーションコンテキストでデプロイされています。 たとえば、私のURLは次のようになります。Angular JSのコンテキストパスを識別するにはどうすればいいですか

http://localhost:8080/myapp 

myappのは - ここでは、アプリケーション・コンテキストです。

角度サービスでは、私がウェブサービスに電話をしたい場合は、getusersと言ってください。私のURLは/myapp/getusersでなければなりません。しかし、あるアプリケーションから別のアプリケーションに変更する可能性があるため、アプリケーションコンテキストのハードコーディングを避けたいと考えています。 私は$window.location.pathnameからcontextpathを決めることができましたが、それは非常に馬鹿に見えます。もっと良い方法はありますか?

FYI私は安らかなサービスのためにSpring MVCを使用しています。

答えて

3

コントローラに$locationサービスを注入します。

var path = $location.path(); // will tell you the current path 
    path = path.substr(1).split('/'); // you still have to split to get the application context 

// path() is also a setter 
$location.path(path[0] + '/getusers'); 
// $location.path() === '/myapp/getusers' 

// ------------------ \\ 

// Shorter way 
$location.path($location.path() + '/getusers'); 
// $location.path() === '/myapp/getusers' 
+5

の答えからインスピレーションを受け

document.location.href.substr(0, document.location.href.lastIndexOf("/#")) + "/getusers"; 

。例えば$ {contextPath}/api/delegation/appsを呼び出します。上記の方法では、アプリケーションがルートコンテキストに再デプロイされたか、ページがさまざまなネストされたパスから呼び出されたかはわかりません。 –

12

私が行ったことは、メインのJSPファイルに変数が宣言されています。その変数は角形アプリケーション全体で利用可能になります。

<script type="text/javascript"> 
    var _contextPath = "${pageContext.request.contextPath}"; 
</script> 

このコードは、他のJavaScriptライブラリを組み込む前にヘッダーで記述する必要があります。

1

あなたは "#" で、hashbangモードを使用している場合、あなたはそのような何かを行うことができます。

$location.absUrl().substr(0, $location.absUrl().lastIndexOf("#")) + "/getusers" 
6

私もTomcatとSpring MVCのを使用しています。 JavaScriptで相対URLを使用すると、そのトリックが実行されます。

これを行うには、REST URLの先頭にある/を削除するだけです。あなたのブラウザの現在のURLからあなたのURLが始まるようにします。

は、次のようにあなたは、url : 'getusers'で行ってもいいですAngularJS $httpサービスについて$resource('getusers')

0

$resource('/getusers')を置き換える:一般的に

$scope.postCall = function(obj) { 
      $http({ 
       method : 'POST', 
       url : 'getusers', 
       dataType : 'json', 
       headers : { 
        'Content-Type' : 'application/json' 
       }, 
       data : obj, 
      }); 
}; 
0

、次のようなあなたのコントローラで注入を使用する必要があります。

angular.module("yourModule").controller("yourController", ["$scope", "yourService", "$location", function($scope, yourService, $location){ 

.... 
     //here you can send the path value to your model. 

     yourService.setPath($location.path()); 

.... 

}]); 
0

角度2(ハッシュバンモードを使用している場合)。以下のコードを使用してURLを構成することができます。あなたは、非単ページアプリケーションで角度を使用している場合は、この方法は信頼性がないの@ jarek-krochmalski

関連する問題