这是我创建的一个傻瓜:http://plnkr.co/edit/ZoKsO7wu5OvCYtwEi9Iy?p=preview。
ng-repeat
呈现的其中一个项目,例如a
。 clear selection
,在AngularJS之外使用jQuery清除选择。a
现在看来a
无法选择。但是,可以选择列表中的其他项目(b
,c
)。选择另一个项目并清除其选择后,可以再次选择a
!
为什么ng-class会出现意外行为?
答案 0 :(得分:3)
我不会使用 jQuery ,但如果您仍然需要,那么您必须让 angular 知道您所做的任何修改。
你可能认为你清除了选择,但jQuery回调只是删除了类。从angular的角度来看,它仍处于选中状态,因此它不会触发ngClass
watchExpression再次添加该类。
使用$scope.$apply()
:
$ apply()用于从角度框架外部以角度执行表达式。 (例如,来自浏览器DOM事件,setTimeout,XHR或第三方库)。
这是一个掠夺者:http://plnkr.co/edit/C6jcmfU8V4tab8oeDJES?p=preview
$('#removeSelection').click(function(){
$scope.$apply(function(){
$scope.selectedId = null;
})
});
ngClick
:<a ng-click="selectedId = null">Click to Clear Selection</a>