2017-10-17 2 views
-1

http 요청에서 얻은 응답에 따라 다른 div를 표시하려고합니다.

$scope.firstStep = true; 
$scope.secondStep = false; 
$scope.thirdStep = false; 

$http({ 
    method: 'GET', 
    url: '/api-web/ec/cadastro/recuperar-acesso', 
    data: { 
    filiacao: $scope.currentFiliacao, 
    cnpj: $scope.currentCNPJ 
    }, 
    headers: {'Content-Type': 'application/json'} 
}).then(function(res){ 
    $scope.firstStep === false; 

    if (res.data.code === -1) { 
    $timeout(function(){ 
     $scope.secondStep === true; //here is the bug, it dont change to true 
     console.log("second", $scope.secondStep); 
    }, 3000) 
    } 
}) 

나는 $이 적용됩니다 (같은), _defer = ...에 ===에서 스위치와 나는 아무 생각이 왜 그 해프닝이 없다 몇 가지를 시도했다.

아이디어가 있으십니까?

+0

올바른 점을 입력하면 코드가 'if (res.data.code === -1) {...}'문에서 멈 춥니 다. – zero298

+0

. 옳은. – vbotio

+0

'$ scope.firstStep === false;는 변수를 설정하지 않습니다. 그것은 가치를 확인하고 있습니다. –

답변

-1

작동하지 않습니까?

$timeout(function(){ 
    $scope.secondStep = true; 
    $scope.apply(); 
    console.log("second", $scope.secondStep); 
}, 3000) 
+2

'$ scope.secondStep'을 설정 한 직후부터 다이제스트주기가 이미 발생하고'$ timeout'도 호출하기 때문에'$ timeout' 내부에'$ scope.apply();'가 발생하면 오류가 발생합니다 다이제스트주기 –

+0

실제로 시간 초과가 필요하지 않으면 나는'$ timeout'을 전혀 사용하지 않을 것입니다. '$ applyAsync'를 사용하십시오. – zero298

+0

@ zero298 OP의 $ timeout 사용은 어떤 종류의 디버깅 목적을위한 것이라고 추측합니다.하지만 잘못 될 수 있습니다. –

관련 문제