2017-10-17 121 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的使用$超時是出於某種調試目的,但我可能是錯的。 –