我有一个用例,我必须使用CSS隐藏HTML元素,如下所示:
HTML:
<div class="item">
</div>
CSS:
.item {
display: none;
}
但是,我需要在页面加载后使用ng-show切换元素的可见性,如下所示:
<div class="item" ng-show="show_element">
</div>
但是,即使$scope.show_element
设置为true,该元素也不会显示,也就是说,css属性会覆盖AngularJS的ng-show。有没有办法让ng-show更优先?
另外,您可能认为我最初可能会将$scope.show_element
保留为false以隐藏它。但是在这种情况下,当页面加载时我会很快看到元素,这从UX的角度来看并不好。
答案 0 :(得分:5)
在你的情况下使其工作的一种方法是使用ng-class
,如果元素应该可见,你可以应用具有正确显示属性的类,即display: block
,如果你遭受慢速引导你可以在https://docs.angularjs.org/api/ng/directive/ngCloak
ng-cloak
检查文档
答案 1 :(得分:4)
另一个简单的替代方案
style="{{show_element?'display:block !important':'display:none !important'}}"
答案 2 :(得分:0)
如果您只是想隐藏项目以便不加载闪存,那么您可以简单地设置一个类,而不是使用设置为.item
的{{1}}类。 display:none
对.ng-hide
开启的元素。
AngularJS指令ng-show
的工作原理是向DOM元素添加或删除ng-show
类。 .ng-hide
类适用规则.ng-hide
display: none !important;
答案 3 :(得分:-1)
我只是改变了课程。 Ng-shows函数是简单地添加或删除ng-hide类,其中只有属性是&#34; display:none!important;&#34;。改变班级的CSS是没有意义的。
你可以做的就是这样:
<div class="{{element_class}} item">
</div>
使用 display:block;
将 element_class 设置为您的班级工作示例: http://codepen.io/GriessbreiLP/pen/EVXQjK
希望这对你有所帮助。
编辑: 不,太慢了,已经两次提到了。