दृश्यता AngularJs में छिपी हुई है?


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

एनजी-शो लागू display: noneया display: blockसंपत्ति लेकिन मैं आवेदन करना चाहता हूं visibility: hiddenऔर visibility: visibleसंपत्ति।

जवाबों:


75

आप नीचे दिए अनुसार उपयोग ng-classया ng-styleनिर्देश कर सकते हैं

ng-class

यह myclassबटन को वर्ग जोड़ देगा जब केवल disableTagButtonसत्य होगा, यदि disableTagButtonगलत है तो myclassबटन से हटा देगा

अभिव्यक्ति पास ng-classएक स्ट्रिंग हो सकती है जो अंतरिक्ष सीमांकित वर्ग नामों, एक सरणी, या बूलियन मानों के लिए वर्ग नामों का एक नक्शा प्रस्तुत करती है।

1 - अंतरिक्ष सीमांकित वर्ग नाम

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

2 - एक सरणी

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

स्टाइल 1, स्टाइल 2 और स्टाइल 3 सीएसएस कक्षाएं हैं जो अधिक जानकारी के लिए नीचे डेमो की जांच करती हैं।

2 - अभिव्यक्ति

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

यदि somePropertyमौजूद है तो .my-classउसे हटा दें।

यदि सीएसएस श्रेणी का नाम ng-classडैश अलग है तो आपको इसे स्ट्रिंग के रूप में परिभाषित करने की आवश्यकता है जैसे कि .. ng-class="'my-class' : ..आप इसे स्ट्रिंग के रूप में परिभाषित कर सकते हैं या नहीं.. ng-class="myClass : ..

एनजी-क्लास डेमो

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

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

ng-style

एक्सप्रेशन [एनजी-शैली के ][2]उत्थान को एक ऐसी वस्तु से गुजारते हैं जिसकी कुंजी सीएसएस शैली के नाम हैं और मान उन सीएसएस कुंजी के लिए संबंधित मान हैं।

EX:

.. ng-style="{_key_ : _value_}" ...=> संपत्ति मूल्य निर्धारित _key_करते समय सीएसएस संपत्ति है _value_। पूर्व =>.. ng-style="{color : 'red'}" ...

यदि आपका ऐसा कुछ उपयोग कर रहा है, background-colorतो यह किसी वस्तु की वैध कुंजी नहीं है, तो इसे .. ng-style="{'background-color' : 'red'}" ...एनजी-क्लास के रूप में उद्धृत किया जाना चाहिए ।

<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।


मैंने "दृश्यता: दृश्यमान" कैसे बदला। उसके लिए मुझे नई कक्षा बनानी होगी?
— चिराग

बस चर को गलत पर सेट करें, इस तरह से कक्षा को हटा दिया जाता है
— माइकल

सेट disableTagButtonकरने के लिए falseफिर स्वचालित रूप से वर्ग myClassबटन से निकाल देंगे तो visibility: hiddenनिकाल देंगे
— Kalhan.Toress

प्रदर्शन कैसे सेट करें: सच्ची झूठी स्थिति के बिना ब्लॉक करें? जैसे एनजी-शैली = "{" someDivId ", 'डिस्प्ले': 'ब्लॉक'}"। मैं HTML नहीं js में ऐसा करना चाहता हूं।
— मईली

50

आप उपयोग कर सकते हैं ng-style। सरल उदाहरण:

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

रनटाइम के समय, शैली में परिवर्तन होता isMenuOpenहै।

  • जब isMenuOpenहै सच , तो आपको style="visibility: visible"।
  • जब isMenuOpenहै झूठे , तो आपको style="visibility: hidden"।

प्रदर्शन कैसे सेट करें: सच्ची झूठी स्थिति के बिना ब्लॉक करें? जैसे एनजी-शैली = "{" someDivId ", 'डिस्प्ले': 'ब्लॉक'}"। मैं HTML नहीं js में ऐसा करना चाहता हूं।
— मईली

1
@Milee यह html में है। उदाहरण:<div ng-style="{'visibility': isMenuOpen?'visible':'hidden'}">...</div>
— AlikElzin-kilaka

आप लिख सकते हैं: ng-style="{visibility: isMenuOpen?'visible':'hidden'}" उद्धरण केवल यौगिक शब्दों के साथ उपयोगी हैं। अन्यथा, आप बिना उद्धरण के सीएसएस गुणों के लिए CAML सिंटैक्स का उपयोग कर सकते हैं।
— मैल

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
कोणीय टीम को सिर्फ एक ng-visibleनिर्देश जोड़ना चाहिए ।
— इहार्त्स्कर्प

12

या यदि आप बूटस्ट्रैप का उपयोग कर रहे हैं, तो invisibleकक्षा का उपयोग करें

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

बूटस्ट्रैप का उपयोग करने वाले लोगों के लिए सबसे सरल और सबसे सुंदर समाधान है।
— सूहीब बेस ने 15:24 पर

2

आपको अपने मामले में ngClass या ngStyle का उपयोग करना चाहिए :

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

और यह सीएसएस :

.button-hidden{
   visibility: hidden;
}

1

आप अपने html पृष्ठ में रेंडर नहीं करते हैं, तो आप एनजी का उपयोग क्यों नहीं करते हैं । मुझे लगता है कि आप इसका उपयोग करते हैं:

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

3
यह प्रदर्शन के समान है; कोई नहीं, लेकिन आवश्यक शैली दृश्यता है: छिपी हुई। जो है ही नहीं।
— यूरी कोज़लोव

मैं इस एनजी-अगर कार्यक्षमता चाहता था क्योंकि मैं दृश्यता को छिपाना चाहता था और तत्व को html में नहीं दिखाना चाहिए। सही समाधान।
— किरण चौधरी

1

ओवरराइडिंग के बारे में अनुभाग देखें https://docs.angularjs.org/api/ng/directive/ngShow ।

आपको बस 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;
}

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.