0

是否可以在加载用户传入的新值后重新创建对象?

例如,我有一个充满 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();

我的问题是我想允许用户更改他们正在请求信息的变量之一,例如 Mercerid,但是当它们被重建时,它们没有新的值。

4

1 回答 1

0

您可以将其作为一个带参数的函数,而不是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 而不是 MerchantId)。

希望这可以帮助。

于 2013-01-17T01:53:12.650 回答