0

내 프로젝트에서 아래 serviceURL Angular Provider가 있습니다.앵글 공급자 get 메소드에는 설정 블록에서 설정 변수에 대한 참조가 없습니다.

app.provider("serviceURL", function() { 

var cartServiceBaseSite = ''; 
var domainName = ''; 

var GetRatingURL = domainName + '/comments.getComments?format=jsonp&callback=JSON_CALLBACK&data={0}&&order={1}='      

return { 
     setCartServiceBaseSite: function(value){ 
      cartServiceBaseSite = value; 
     }, 
     setDomainName: function(value){ 
      domainName = value; 
     }, 
     $get: function() { 
      return { 
       GetServiceURL: function(serviceConstantURLName, paramsArray){ 
       var requestURL = eval(serviceConstantURLName); 

       for(var i = 1; i <= paramsArray.length; i++) { 
        requestURL = requestURL.replace(new RegExp('\\{' + (i-1) + '\\}', 'gi'), paramsArray[i-1]); 
       } 

       return requestURL; 
       } 
      } 
     } 
    }; 
}); 

나는 각 config 블록에서 상수만큼 좋은 cartServicebaseSite &는 domainName 변수를 설정하고있다.

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

app.config(['serviceURLProvider', function (serviceURLProvider) { 

    serviceURLProvider.setCartServiceBaseSite('US_BASESITE'); 
    serviceURLProvider.setGigyaDomainName('http://somerandom.com'); 

}]); 

이 serviceURL 공급자를 컨트롤러에 삽입하고 적절한 설정 후에 URL을 가져 오는 중입니다.

컨트롤러 코드 : 제공자 블록

myModule.controller('T', ['serviceURL', function (serviceURL){ 

    var paramsArray = []; 
    paramsArray[0] = 'dataValue'; 
    paramsArray[1] = 'orderValue'; 

    serviceURL.GetServiceURL('GetRatingURL', paramsArray); 

}]); 

내가 제공 블록의 변수에 불과하다 'GetRatingURL'로 매개 변수를 전달하고 GEtServiceURL 메소드를 호출.

나는 우리가 setDomainName에서 설정 한 domainName 값을 얻지 못하고 있다는 것을 평가하기 위해 평가 식을 사용하고 있습니다.

current output - '/comments.getComments?format=jsonp&callback=JSON_CALLBACK&data=dataValue&order=orderValue' 

expected output - 'http://somerandom.com/comments.getComments?format=jsonp&callback=JSON_CALLBACK&data=dataValue&order=orderValue' 

문제는 domainName이 GetRatingURL에 설정되지 않습니다.

아무에게도 도움이 될 수 없으며이 상황을 처리하기위한 접근 방법이 될 수 있습니다.

답변

0

console.log이 일어나는 상황을 확인하기 위해 추가

return { 
     setCartServiceBaseSite: function(value){ 
      cartServiceBaseSite = value; 
      //ADD console.log 
      console.log("Setting BaseSite "+value); 
      console.log("GetRatingURL= "+ GetRatingURL); 
     }, 

결과는 당신이 알 필요가 무엇을 말해야한다.