2014-02-05 3 views
0

호출을 받고 게시하는 모든 사람에게 내 <base href="... href 속성 값을 앞에두고 싶습니다.AngularJS 요청 요격기가 내 templateUrl보기 해상도에 문제가 발생했습니다.

angular.module('curriculumModule', ['ng', 'ngRoute', 'curriculumControllerModule', 'directiveModule']) 
.config(function($routeProvider, $httpProvider) { 

    $httpProvider.defaults.headers.common['Content-Type'] = 'application/json'; 
    $httpProvider.defaults.headers.common['X-Ajax'] = 'true'; 

    $httpProvider.interceptors.push(function ($q) { 
     return { 
      'request': function (config) { 
       config.url = $('base').attr('href') + '/' + config.url; 
       return config || $q.when(config); 
      } 
     }; 
    });  

    $routeProvider 
    .when('/view/:id', {controller: 'ViewCurriculumCtrl', templateUrl: 'view.html'}) 
    .when('/new', {controller: 'CreateCurriculumCtrl', templateUrl: 'new.html'}) 
    .when('/edit/:id', {controller: 'EditCurriculumCtrl', templateUrl: 'edit.html'}) 
    .when('/:curriculumId/workExperience/new', {controller: 'NewWorkExperienceCtrl', templateUrl: 'workExperiencesNew.html'}) 
    .when('/:curriculumId/workExperience/edit/:id', {controller: 'EditWorkExperienceCtrl', templateUrl: 'workExperiencesEdit.html'}) 
    .when('/:curriculumId/training/new', {controller: 'NewTrainingCtrl', templateUrl: 'trainingsNew.html'}) 
    .when('/:curriculumId/training/edit/:id', {controller: 'EditTrainingCtrl', templateUrl: 'trainingsEdit.html'}) 
    .otherwise({redirectTo:'/view/:id'}); 
}); 

그러나, 어떻게 든, AngularJS와도 내가 원하지 않는 templateUrls에 기본 href 속성의 값을 앞에 추가 : 나는 다음과 같이 요청 인터셉터를 사용했습니다.

어떻게하면 좋을까요?

+0

는 $ ('기본') [0] .attr ('HREF') 또는 $ ('기본') EQ (0 시도) .attr ('href') 모두 매우 못생긴 해킹입니다 – Whisher

+0

안녕하세요! 내가 너를 쫓을 지 모르겠다. jquery가 작동합니다. 문제는 Angular가 템플릿에 대한 호출을 포함하여 모든 호출에 inteceptor를 적용한다는 것입니다. GET http : // localhost : 8080/bignibou/view.html 404 (Introuvable) – balteo

+0

죄송합니다. 나는 지구상의 훼이가 너를 할 수 있길 바란다. ^^ – Whisher

답변

2

angular는 $ http 서비스를 사용하여 템플릿을로드하므로, 인터셉터가 템플릿 URL을 잘못 변형하는 이유가됩니다. 인터셉터가 아닌 $ http 서비스를 호출하기 전에 다른 방법으로 URL을 수정하는 것이 좋습니다.

간단한 래퍼 서비스를해야한다, 같은 :.

angular.module('curriculumModule').service('curHttp', ['$http', function($http) { 

    this.http = function(params) { 
    params.url = $('base').attr('href') + '/' + params.url; 
    return $http(params); 

}]); 
+0

감사합니다. Geoff. 당신의 해결책은 아주 좋습니다. 내 원래의 문제는 실제로 상황 변화 경로를 다루는 것이 었습니다. 하드 코딩을 피하고 싶었는데 ... – balteo