angular provider get方法没有来自config block

时间:2017-01-04 13:32:16

标签: javascript angularjs angularjs-directive angular-providers

我的项目中有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&amp; domainName变量,与angular config block中的常量一样好。

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方法时,在Provider块中的

我将参数传递为'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中没有设置domainName。

任何人都可以帮助解决这个问题,或者应该采取什么方法来处理这种情况。

1 个答案:

答案 0 :(得分:0)

添加console.log以查看正在发生的事情:

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

结果应告诉您需要了解的内容。