AngularJS指令为什么不';是否对元素的子元素应用任何类或样式更改?

AngularJS指令为什么不';是否对元素的子元素应用任何类或样式更改?,angularjs,angular-material,angular-directive,ng-hide,jqlite,Angularjs,Angular Material,Angular Directive,Ng Hide,Jqlite,我目前正在为我的应用程序使用DOM更改指令。我希望元素中的按钮在状态更改时隐藏 HTML: 接收事件并启动函数。 以下内容也不起作用 angular.element(document.querySelector('#accountIcon')).addClass('ng-hide'); angular.element(document.querySelector('#accountIcon')).css('display', 'none'); angular.element(document

我目前正在为我的应用程序使用DOM更改指令。我希望元素中的按钮在状态更改时隐藏

HTML:

接收事件并启动函数。 以下内容也不起作用

angular.element(document.querySelector('#accountIcon')).addClass('ng-hide'); 
angular.element(document.querySelector('#accountIcon')).css('display', 'none'); 
angular.element(document.querySelector('#accountIcon')).addClass('hide'); 
var accountIcon = element.children()[0];
accountIcon.addClass('ng-hide');
其中:

.hide {
    display: none;
}
希望你能明白要点。以下方法确实有效:

element.addClass('ng-hide')
虽然很明显,我并不想隐藏整个元素,因为很快会添加更多按钮。(不仅仅是帐户图标)。
任何帮助或文件,不胜感激。谢谢。

您是否检查了控制台的错误

element.children()[0]
是一个DOM节点,它没有
.addClass()
方法。要使用
.addClass()
方法,只需执行以下操作:

element.children().eq(0).addClass('ng-hide');

但问题仍然存在——为什么在不必使用DOM操作的情况下,还要特意使用DOM操作呢?您不能在指令中使用
ng hide
指令吗?通过ID访问元素并执行所有这些DOM操作似乎是不必要的。

谢谢您的回复。你的方法很有魅力。我之所以使用指令,是因为我想添加多个图标,当图标显示由不同事件和设备的混合指示时,后面的逻辑对ng类属性来说太多了(如果你是这个意思的话)。我还认为这种类型的DOM操作最好在指令中进行。@Max经验法则是,如果有DOM操作,它应该在指令中进行,但最好根本不使用DOM操作。“对于ng类属性来说太多了(如果你是这个意思的话)”不,我是指。如果你说没有DOM操作太复杂了,我有点怀疑。似乎DOM操作只会让事情变得更复杂。如果您维护的是一个简单的模型,它规定了应该显示什么和应该隐藏什么,那么
ng hide
ng show
应该足够了。
element.addClass('ng-hide')
element.children().eq(0).addClass('ng-hide');