AngularJsに隠された可視性?


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

NG-showが適用されるdisplay: noneか、display: blockプロパティしかし、私は、適用したいvisibility: hiddenvisibility: visibleプロパティ。

回答:


75

以下のようにng-classまたはng-styleディレクティブを使用できます

ng-class

これmyclassにより、disableTagButtontrueの場合のみボタンにクラスが追加され、disableTagButtonfalseの場合はmyclassボタンから削除されます。

に渡す式は、ng-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-classデモ

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

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

ng-style

式は、キーがCSSスタイル名であり、値がそれらのCSSキーに対応する値であるオブジェクトに[ngスタイルの][2]評価を渡します。

例:

.. ng-style="{_key_ : _value_}" ...=>_key_は、_value_プロパティ値を設定する際のcssプロパティです。例=>.. 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'}"

someVartrueと評価され、次に可視性はに設定され、visibleその他の可視性はに設定されhiddenます。


「可視性:可視」をどのように変更したか。そのために私は新しいクラスを作成する必要がありますか?
chirag 2014年

変数をfalseに設定するだけで、クラスが削除されます
Michael

設定disableTagButtonfalse自動的にクラスmyClass、ボタンから削除されますvisibility: hidden削除されます
Kalhan.Toress

表示を設定する方法:真偽の条件なしでブロックしますか?ng-style = "{" someDivId "、 'display': 'block'}"のように。jsではなくhtmlでこれを実行したいと思います。
ミリー2017年

50

を使用できますng-style。簡単な例:

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

実行時に、スタイルが変更されるとisMenuOpen変更されます。

  • ときisMenuOpenである真の、あなたが持っているでしょうstyle="visibility: visible"
  • isMenuOpenfalseの場合、がありますstyle="visibility: hidden"

表示を設定する方法:真偽の条件なしでブロックしますか?ng-style = "{" someDivId "、 'display': 'block'}"のように。jsではなくhtmlでこれを実行したいと思います。
ミリー2017年

1
@Mileeそれはhtmlにあります。例:<div ng-style="{'visibility': isMenuOpen?'visible':'hidden'}">...</div>
AlikElzin-kilaka 2017年

あなたが書くことができます:ng-style="{visibility: isMenuOpen?'visible':'hidden'}" 引用符は複合語でのみ役立ちます。それ以外の場合は、引用符なしで構成されたcssプロパティにCAML構文を使用できます。
悪意2017

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 2015

2
Angularチームはng-visibleディレクティブを追加するだけです。
iheartcsharp 2017年

12

または、ブートストラップを使用している場合は、invisibleクラスを使用します

ng-class='{"invisible": !controller.isSending}'

つまり、ブートストラップを使用している人々にとって、最もシンプルでエレガントなソリューションです。
Souhaieb Besbes 2016年

2

次の場合は、ngClassまたはngStyleを使用する必要があります。

<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に似ていますが、必要なスタイルはvisibility:hiddenです。これは同じではありません。
ユーリーコズロフ2016年

可視性を非表示に設定したいので、このng-if機能が必要でしたが、要素はhtmlに表示されません。完璧なソリューション。
キラン・チョードリー

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;
}

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.