0

如果我通过 ng-class 向元素添加一个类,并尝试通过 angular-element 获取同一个类的存在,它总是返回 false。

请让我知道以下代码有什么问题,

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'));
}    });
4

1 回答 1

1

问题是您正在检查.hasClass回调函数内部,这是在 angulars摘要循环开始之前执行的。

所以目前: 1. 按下按钮 - 2. $scope.add 已执行 - 3. 已检查类 - 4. Angulars 摘要循环更改类

为了解决这个设置,一个 $timeout 会将你console.log移到堆栈的底部。

在这里工作小提琴

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);
    }

}]);
于 2015-03-24T10:36:03.380 回答