如果我通过 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'));
} });
最佳答案
问题是您正在回调函数内检查 .hasClass
,这是在 Angulars digest cycle 之前执行的开始。
目前: 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);
}
}]);
关于javascript - 通过 ng-class 添加类时,angular.element 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29229335/