0

私のプロジェクトには、以下の serviceURL Angular Provider があります。

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

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

}]);

プロバイダーブロックで GETServiceURL メソッドを呼び出すと、パラメーターを「GetRatingURL」として渡しますが、これはプロバイダーブロックの変数にすぎません。

それを評価するために eval 式を使用していますが、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'

問題は、ドメイン名が GetRatingURL に設定されていないことです。

誰でもこれを手伝ってもらえますか、またはこの状況を処理するためのアプローチは何ですか。

4

1 に答える 1