我的项目中有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。
任何人都可以帮助解决这个问题,或者应该采取什么方法来处理这种情况。
答案 0 :(得分:0)
添加console.log
以查看正在发生的事情:
return {
setCartServiceBaseSite: function(value){
cartServiceBaseSite = value;
//ADD console.log
console.log("Setting BaseSite "+value);
console.log("GetRatingURL= "+ GetRatingURL);
},
结果应告诉您需要了解的内容。