2015-12-04 3 views
1

У меня есть следующий код javascript, который я не могу передать во внутреннюю функцию.Передача значений во внутреннюю функцию javascript

Я могу получить значения u1 и p1 в консоли «Внешняя функция», в то время как я не могу получить его в функции, которая находится внутри «confirm».

Консоль печатает внутренние функции 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

Хорошо. Держите его в формате lemme. Благодаря! – Gene

+0

@ T.J.Crowder Спасибо за редактирование! – Gene

+1

mate try change confirmPopup.then (function (res) – vivid

ответ

4

Что может быть проблема, как я уверен, что я прошел в переменных.

Это полностью зависит от того, что функция confirmPopup использует в качестве своей резолюции значение, но шансы, что нет, вы не передали их.

Вам также не нужно: просто удалите их из списка аргументов функции обратного вызова then, и вы сможете получить к ним доступ, поскольку этот обратный вызов является закрытием в контексте, где он создан, который уже имеет 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) { 
      // removed from here -----^ 
      if (res) { 
       $scope.loading = true; 
       console.log("Inner Function: " + u1 + " , " + p1); 
       loginz(u1, p1); 
      } else { 
       console.log('Cancelled'); 
      } 
     }); 
    } 
} 
+0

Ahhhh! Это просто глупая ошибка. Спасибо! – Gene

Смежные вопросы