隐藏在AngularJs中的可见性?


80
<button id="tagBtnId" name="TagsFilter" ng-show="disableTagButton">Tags</button>

ng-show应用display: nonedisplay: block属性,但我想应用visibility: hiddenvisibility: visible属性。

Answers:


75

您可以使用ng-classng-style指令,如下所示

ng-class

myclass当onlydisableTagButton为true时,它将为按钮添加类;如果disableTagButton为false,myclass则将其从按钮中移除

expression pass tong-class可以是表示以空格分隔的类名的字符串,数组或类名到布尔值的映射。

1-以空格分隔的类名

.. ng-class="{strike: deleted, bold: important, red: error}".. 

2-数组

.. ng-class="[style1, style2, style3]".. 

style1,style2和style3是CSS类,请检查以下演示以获取更多信息。

2-表达

.. ng-class="'my-class' : someProperty ? true: false".. 

如果someProperty存在,则添加.my-class其他,将其删除。

如果css中的类名称以ng-class短划线分隔,则需要将其定义为字符串,.. ng-class="'my-class' : ..否则可以将其定义为字符串或不.. ng-class="myClass : ..

ng级演示

<button id="tagBtnId" name="TagsFilter" ng-class="{'myClass': disableTagButton}">Tags</button>

<style>
   .myClass {
       visibility: hidden
    }
</style>

ng-style

表达式将[ng样式的][2]eval传递给一个对象,该对象的键是CSS样式名称,而值是这些CSS键的对应值。

例如:

.. ng-style="{_key_ : _value_}" ...=>_key_是CSS属性,同时_value_设置属性值。例如=>.. ng-style="{color : 'red'}" ...

如果您使用类似的东西,background-color那么它不是对象的有效键,则需要将其引用.. ng-style="{'background-color' : 'red'}" ...为ng-class。

<button id="tagBtnId" name="TagsFilter" ng-style="disableTagButton">Tags</button>

那么你disableTagButton应该像

$scope.disableTagButton = {'visibility': 'hidden'}; // then button will hidden.

$scope.disableTagButton = {'visibility': 'visible'}; // then button will visible.

因此您可以通过更改按钮来更改按钮的可见性$scope.disableTagButton

或者您可以将其用作内联表达式,

ng-style="{'visibility': someVar ? 'visible' : 'hidden'}"

someVar,则可见性设置为,visible其他可见性设置为hidden


我如何更改“可见性:可见”。为此,我必须创建新的类?
希拉格2014年

只需将变量设置为false,就可以删除该类
Michael

设置disableTagButton为,false然后自动myClass将类从按钮中删除,然后visibility: hidden将删除
Kalhan.Toress

如何设置显示:没有真假条件的块?就像ng-style =“ {” someDivId“,'display':'block'}”。我想在html中而不是js中执行此操作。
Milee '17

50

您可以使用ng-style。简单的例子:

<div ng-style="{'visibility': isMenuOpen?'visible':'hidden'}">...</div>

在运行时,样式会随着isMenuOpen更改而改变。

  • 如果isMenuOpen,您将拥有style="visibility: visible"
  • 如果isMenuOpen假的,你就会有style="visibility: hidden"

如何设置显示:没有真假条件的块?就像ng-style =“ {” someDivId“,'display':'block'}”。我想在html中而不是js中执行此操作。
Milee '17

1
@Milee在html中。示例:<div ng-style="{'visibility': isMenuOpen?'visible':'hidden'}">...</div>
AlikElzin-kilaka

您可以这样写:ng-style="{visibility: isMenuOpen?'visible':'hidden'}" 引号仅对复合词有用。否则,可以对不带引号的css属性使用CAML语法。
maliness's

15

这是一个简单的指令,可将可见性设置为隐藏或可见(但不会折叠):

.directive('visible', function() {

    return {
        restrict: 'A',

        link: function(scope, element, attributes) {
            scope.$watch(attributes.visible, function(value){
            element.css('visibility', value ? 'visible' : 'hidden');
        });
    }
  };
})

用法:

<button visible='showButton'>Button that can be invisible</button>


我喜欢指令方法,在这种情况下,它可能会显得过大。但我仍然喜欢它:)
Raz0rwire

2
Angular团队应该只添加一条ng-visible指令。
iheartcsharp


2

在这种情况下,应使用ngClassngStyle

<button id="tagBtnId" name="TagsFilter" 
    ng-class="{'button-hidden':!disableTagButton}">Tags</button>

而这个CSS

.button-hidden{
   visibility: hidden;
}

1

为什么不使用ng-如果您的标记未在html页面中呈现。我想你用这个:

<button id="tagBtnId" name="TagsFilter" ng-if="disableTagButton">Tags</button>

3
这类似于display; none,但是所需的样式是visible:hidden。哪个不一样。
尤里·科兹洛夫

我想要此ng-if功能,因为我想将可见性设置为hidden,并且该元素不应出现在html中。完美的解决方案。
Kiran Chaudhari

1

请参阅https://docs.angularjs.org/api/ng/directive/ng 显示有关覆盖.ng-hide的部分

您只需要将类分配hg-hide-animate给元素

/* style your element(s) at least for selector.ng-hide */
/* in this case your selector is #tagBtnId */
#tagBtnId.ng-hide {
  /*visibility:hidden;*/
  opacity: 0;
  transition: opacity 1s ease-in;
}
#tagBtnId {
  /*visibility:initial;*/
  opacity: 1;
  transition: opacity 1s ease-out;
}

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.