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

我正在设置 cartServicebaseSite 和 domainName 变量,它与 angular config 块中的常量一样好。

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

0

添加一个console.log以查看发生了什么:

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

结果应该告诉你你需要知道什么。

于 2017-01-04T15:58:23.810 回答