2013-11-04 6 views
1

AngularJS의 가상 경로는 어떻게 처리합니까?AngularJS 및 가상 경로

예를 들어 내 테스트 환경에서 내 기본 URL은 http://localhost/AppName/이고 프로덕션 환경에서는 루트가 http://www.mysite.com/이됩니다.

dev에서 $http.gethttp://localhost/AppName/Controller/Action으로 표시되지만 그 경로가 존재하지 않는다는 가정하에 http://www.mysite.com/Controller/Action이어야합니다.

으로 백엔드를 조롱 할 때 $http 호를 어떻게 처리합니까?

나는 _Layout.cshtml (사용 ASP.NET MVC)에서 이것을 시도했지만 그 단위 테스트에서 작동하지 않습니다

: 또한 시도

<script> 
    (function() { 
     'use strict'; 

     var app = angular.module('cs').value('urlHelper', { 
      getUrl: function (url) { 
       var basePath = '@VirtualPathUtility.ToAbsolute("~/")'; 

       return basePath + url; 
      } 
     }); 
    }()); 
</script> 

:

(function() { 
    'use strict'; 

    var app = angular.module('cs', []); 

    app.run(['$rootScope', function ($rootScope) { 
     $rootScope.basePath = '/'; 
    }]); 

}()); 

어떤 아이디어로하지 prod에 배포하기 전에 어딘가에 루트 경로를 전환하는 것에 대해 걱정해야합니까?

+0

이 도메인 이름으로 귀찮게'/ '로 시작하지 마십시오. 자동으로 올바른 루트를 가리 킵니다. – Mik378

+0

@ Mik378 - $ http로 내 요청을'$ http.get ('/ Controller/Action')'과 같이 작성하면 두 경우 모두 사용할 수 있습니까? – Sam

+0

네, 그렇습니다. 내 응용 프로그램에서 그런 식으로 일하고 있어요. – Mik378

답변

1

basePath는 자체적 인 값일 수 있으며 url은 basePath에 종속 된 서비스입니다.

서버 쪽 생성 페이지에서 서버는 VirtualPathUtility가 찾은 값을 삽입하고 테스트에서 수동으로 작업을 삽입합니다.

면도칼 :

JS
<script> 
    angular.module('cs').value('basePath', '@VirtualPathUtility.ToAbsolute("~/")'); 
</script> 

다른 파일 :

angular.module('cs').factory('urlHelper', function (basePath) { 
    return { 
     getUrl: function (url) { 
      return basePath + url; 
     } 
    }; 
}); 

시험 :

var urlHelper; 

beforeEach(function() { 

    module(function($provide) { 
     $provide.value('basePath', '/'); 
    }); 

    inject(function($injector) { 
     urlHelper = $injector.get('urlHelper'); 
    }); 
}); 
+0

견본을 제공해 주시겠습니까? – Sam