我有以下javascript代码,我无法传入"内部功能"。
我能够在"外部功能"中检索u1和p1值。控制台,而我无法在嵌套在'确认'内的功能中检索它。
控制台将内部功能的u1和p1打印为未定义。
如下所示的代码段:
function alertFunc(vara, varb) {
console.log("Timeout!");
var u1 = vara;
var p1 = varb;
console.log("Outer Function: " + u1 + " , " + p1);
confirm(u1, p1);
function confirm(u1, p1) {
var confirmPopup = $ionicPopup.confirm({
title: 'Network Time-Out',
template: 'Check your network connection and try again.',
okText: 'Retry'
});
confirmPopup.then(function(res, u1, p1) {
if (res) {
$scope.loading = true;
console.log("Inner Function: " + u1 + " , " + p1);
loginz(u1, p1);
} else {
console.log('Cancelled');
}
});
}
}
可能是什么问题,因为我确定我已经传入了变量。可能是在'confirmPopup'期间,我没有传递值?非常感谢任何指针!
答案 0 :(得分:4)
可能是什么问题,因为我确信我已经传入了变量。
这完全取决于confirmPopup
函数用作其分辨率值的内容,但可能性不是,你还没有通过它们。
您也不需要:只需从then
回调函数参数列表中删除它们,您就可以访问它们,因为该回调是关闭的它已创建的上下文,已有u1
和p1
。
E.g:
function alertFunc(vara, varb) {
console.log("Timeout!");
var u1 = vara;
var p1 = varb;
console.log("Outer Function: " + u1 + " , " + p1);
confirm(u1, p1);
function confirm(u1, p1) {
var confirmPopup = $ionicPopup.confirm({
title: 'Network Time-Out',
template: 'Check your network connection and try again.',
okText: 'Retry'
});
confirmPopup.then(function(res) {
// removed from here -----^
if (res) {
$scope.loading = true;
console.log("Inner Function: " + u1 + " , " + p1);
loginz(u1, p1);
} else {
console.log('Cancelled');
}
});
}
}