将值传递到内部javascript函数中

时间:2015-12-04 09:18:29

标签: javascript

我有以下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'期间,我没有传递值?非常感谢任何指针!

1 个答案:

答案 0 :(得分:4)

  

可能是什么问题,因为我确信我已经传入了变量。

这完全取决于confirmPopup函数用作其分辨率值的内容,但可能性不是,你还没有通过它们。

您也不需要:只需从then回调函数参数列表中删除它们,您就可以访问它们,因为该回调是关闭的它已创建的上下文,已有u1p1

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');
            }
        });
    }
}