2015-03-24 3 views
0

, если я добавляю класс к элементу через ng-класс и пытаюсь получить существование того же класса через угловой элемент, он всегда возвращает false.angular.element не работает, когда класс добавляется через ng-класс

Пожалуйста, дайте мне знать, что случилось с ниже код,

HTML:

<body ng-app="myApp"> 
<div ng-controller="myController"> 
<input type="text" ng-class="{'red':required == true}"/> 
<button ng-click="add()">click</button> 
</div> 
</body> 

CSS:

.red {border: 1px solid #ff0000;} 

JavaScript:

var myApp = angular.module("myApp", []); 
myApp.controller("myController", function($scope){ 

var elem = angular.element(document.querySelector('input')); 
$scope.required = false; 
$scope.add = function(){ 
$scope.required = true; 
console.log(elem.hasClass('red')); 
} }); 

ответ

1

Вопрос заключается в том, что вы проверяете .hasClass внутри функции обратного вызова, это выполняется перед запуском углов digest cycle.

Так в данный момент: 1. Кнопка нажата - 2. $ scope.add казнены - 3. Класс проверяется - 4. переваривать цикл углам главного изменения класс

Чтобы решить эту конфигурацию за $ таймаут, который будет двигаться ваш console.log к нижней части стека.

Working fiddle here

var myApp = angular.module('myApp',[]); 
myApp.controller("myController", ['$scope', '$timeout', function($scope, $timeout){ 

    var elem = angular.element(document.querySelector('input')); 

    $scope.required = false; 
    $scope.add = function(){ 
     $scope.required = true; 
     $timeout(function(){ 
      console.log(elem, elem.hasClass('red')); 
     }, 0); 
    } 

}]);