2016-05-27 3 views
1

Почему он не работает, чтобы установить $scope.blured в этом setTimeout() (имитируя сообщение и ответ)?change scope property with setTimeout

Plunker

$scope.bluryLines = function(value) { 
    $scope.blured = true; 

    if (value === '' || value === undefined) { 
     console.log('value is empty'); 
    } else { 
     console.log(value); 
    } 

    //faking a post 
    setTimeout(function() { 
     $scope.blured = false; 
     console.log('log'); 
    }, 1000); 
}; 

нажав на кнопку cleares это сразу.

$scope.removeOverlay = function() { 
    $scope.blured = false; 
}; 
+0

Это является журналом "log '? – JohnPan

ответ

2

setTimeout не содержит дайджест. Вместо этого используйте угловую услугу $timeout.

app.controller('MainCtrl', function($scope, $timeout) { 

    $scope.bluryLines = function(value) { 
     $scope.blured = true; 

     //faking a post 
     $timeout(function() { 
      $scope.blured = false; 
     }, 1000); 
    }; 

}); 
+0

@ Dejan.S (конечно) ... =) – evolutionxbox