2017-10-17 57 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.apply();'$ timeout'里面的内容会抛出一个错误,因为摘要循环已经发生,尤其是因为它是在设置'$ scope.secondStep'和'$ timeout'后立即调用消化周期。 –

+0

除非实际需要超时,否则我根本不会使用'$ timeout'。使用'$ applyAsync' – zero298

+0

@ zero298我猜OP的使用$超时是出于某种调试目的,但我可能是错的。 –