不通过内部函数访问外部函数参数

我有一个函数,它可以在成功时调用一个匿名函数&。匿名函数参数用于收集来自服务器的响应,但它在内部不可用内部函数除非作为参数传递。不通过内部函数访问外部函数参数

callService('POST', getDataInfo, detailData, function (data) { 

formDisplayGrid('.accruedGrid', '.accruedTable', 'Total Accrued');//doesn't work.

formDisplayGrid(data,'.accruedGrid', '.accruedTable', 'Total Accrued'); //works

});

callService只是它使用jQuery的AJAX发出呼叫的功能。

function callService(method, url, data, success) { 

var ajaxObject = {

url: url,

method: method,

dataType: 'json',

success: success

}

if (method == 'POST') {

ajaxObject['data'] = data;

}

jQuery.ajax(ajaxObject);

}

formDisplayGrid函数只是迭代数据集以形成HTML表。

function formDisplayGrid(data, modalSelector, mainGridSelector, totalLabel) {  

jQuery(modalSelector).modal();

if (typeof data != 'undefined' && data.Code === 200) {

var mainGrid = jQuery(mainGridSelector);

var tbody = '';

jQuery.each(data['Data']['category'], function (k, v) {

//some code here.

jQuery.each(v['subcat'], function (k, v) {

//some code here.

});

});

//some code here.

mainGrid.find('tbody').html(tbody).fadeIn(1200);

}

}

是,因为匿名函数在 正在执行jQuery.ajax功能,它应该是可用的,如果匿名函数直接的callService函数中执行,这是怎么回事?

回答:

的概念基本上是简单的,你formDisplayGrid()函数是外部函数回调函数,以便它不应该有访问私有变量在那个回调函数中。但是如果你想要第一种方法工作,你将不得不在回调函数中定义函数。

回答:

您的formDisplayGrid函数将无法访问调用它的任何变量,除非这些变量是全局变量或它们处于闭包中。

编辑:你的函数必须从某个地方得到它的data参数 - 否则怎么知道什么数据是?有一个很好的理由,只有第二个工作。

EDIT2:这里是一个封闭的解决方案:

callService('POST', getDataInfo, detailData, function (data) { 

function formDisplayGrid(modalSelector, mainGridSelector, totalLabel) {

// you no longer need the data variable

jQuery(modalSelector).modal();

if (typeof data != 'undefined' && data.Code === 200) {

var mainGrid = jQuery(mainGridSelector);

var tbody = '';

jQuery.each(data['Data']['category'], function (k, v) {

//some code here.

jQuery.each(v['subcat'], function (k, v) {

//some code here.

});

});

//some code here.

mainGrid.find('tbody').html(tbody).fadeIn(1200);

}

}

formDisplayGrid('.accruedGrid', '.accruedTable', 'Total Accrued');//should work.

});

以上是 不通过内部函数访问外部函数参数 的全部内容, 来源链接: utcz.com/qa/264430.html

回到顶部