使用新的var值重建列表jquery

nxowjjhe  于 12个月前  发布在  jQuery
关注(0)|答案(1)|浏览(113)

是否可以在使用用户传入的新值加载对象后重新创建对象?
例如,我有一个充满API调用信息的对象,包括名称和带有必需属性的其余URL。

var masterCallList = [
   {'CallName':'GetMerchantData','CallUrl': '/Merchants/?MerchantId=' + MerchantId + '&ApiKey=' + ApiKey, 'CallType':'Get', 'Desc':''},
   {'CallName':'GetMerchantFeed','CallUrl': '/FeedReturnItems/?MerchantId=' + MerchantId + '&ApiKey=' + ApiKey', 'CallType':'Get' 'Desc':''}
];

字符串
在页面加载时,我循环遍历每个调用并从中构建html元素,包括创建onclick事件,然后运行调用。

$(document).ready(function(){   
    //create the call lists and page elements from the master
    BuildCallLists();


我的问题是,我想允许用户更改其中一个变量,比如merchantid,他们正在请求有关该变量的信息,但当他们重新构建时,他们没有新的值。

1wnzp6jl

1wnzp6jl1#

与其将CallUrl作为字符串,你可以将其作为一个接受参数的函数,例如:

var masterCallList = [
  {'CallName':'GetMerchantData','CallUrlFun': function(MerchantId, ApiKey) { return '/Merchants/?MerchantId=' + MerchantId + '&ApiKey=' + ApiKey; }, 'CallType':'Get', 'Desc':''},
  {'CallName':'GetMerchantFeed','CallUrlFun': function(MerchantId, ApiKey) { return '/FeedReturnItems/?MerchantId=' + MerchantId + '&ApiKey=' + ApiKey; }, 'CallType':'Get', 'Desc':''}
];

字符串
其中CallUrlFun是新函数。现在您可以使用给定的参数(MerchantId, ApiKey)调用该函数。下面是一个jsFiddle示例:

另一种选择是在字符串中有一个特殊的名字对象,并进行字符串替换,例如:

var masterCallList = [
  {'CallName':'GetMerchantData','CallUrlTemplate': '/Merchants/?MerchantId=##MerchantId##&ApiKey=##ApiKey##', 'CallType':'Get', 'Desc':''},
  {'CallName':'GetMerchantFeed','CallUrlTemplate': '/FeedReturnItems/?MerchantId=##MerchantId##&ApiKey=##ApiKey##', 'CallType':'Get', 'Desc':''}
];


其中CallUrlTemplate包含名字对象##MerchantId####ApiKey##。下面是一个示例jsFiddle:

顺便说一下,通常在JavaScript中,变量名以小写字母开头(例如,merchantId而不是martId)。

相关问题