क्या गैर-छिपाने / एनजी-शो में जटिल अभिव्यक्ति संभव है?


180

मैं ऐसा करना चाहता हूं:

ng-hide="!globals.isAdmin && mapping.is_default"

लेकिन अभिव्यक्ति हमेशा के लिए मूल्यांकन करता है false

मैं विशेष कार्य को परिभाषित नहीं करना चाहता $scope


1
वह वाक्य रचना मेरे लिए काम करती है, और मैं इसका अक्सर उपयोग करता हूं। यदि इसका मूल्यांकन हो रहा है false, तो आप उन मूल्यों को दोबारा जांच सकते हैं। यह संभव है कि "ग्लोबल्स" और / या "मैपिंग" ऑब्जेक्ट हैंundefined
derrylwc

जवाब के नीचे मेरी टिप्पणी पढ़ें।
पॉल

सिर्फ एक संकेत - यदि आप इसके बजाय नियंत्रक विधि का उपयोग करते हैं, तो आप वास्तव में डीबगर में मूल्यांकन के माध्यम से कदम बढ़ा सकते हैं!
दिमित्री के

जवाबों:


212

यदि आपको मनमाने ढंग से जावास्क्रिप्ट कोड चलाने की आवश्यकता है, तो एक नियंत्रक विधि का उपयोग करें, या आप एक फ़िल्टर परिभाषित कर सकते हैं जो सही या गलत लौटा है।

मैंने अभी-अभी परीक्षण किया है (पहले ऐसा करना चाहिए था), और ng-show="!a && b"जैसा अपेक्षित था , वैसा ही कुछ काम किया।


4
तुम सही हो। समस्या यह थी कि आइडमान ध्वज 'बूलियन' के बजाय 'स्ट्रिंग' प्रकार का था।
पॉल

121

ng-show/ ng-hideकेवल booleanमूल्यों को स्वीकार करता है।

जटिल अभिव्यक्तियों के लिए जटिलताओं से बचने के लिए नियंत्रक और गुंजाइश का उपयोग करना अच्छा है।

नीचे एक काम करेगा (यह बहुत जटिल अभिव्यक्ति नहीं है)

ng-show="User=='admin' || User=='teacher'"

यहां तत्व को यूआई में दिखाया जाएगा जब दोनों में से कोई भी शर्त सही होगी (या ऑपरेशन)।

इस तरह आप किसी भी भाव का उपयोग कर सकते हैं।


12

यदि आपके पास बहुत सारे भाव नहीं हैं तो यह काम करेगा।

उदाहरण: ng-show="form.type === 'Limited Company' || form.type === 'Limited Partnership'"

इससे अधिक किसी भी अभिव्यक्ति के लिए एक नियंत्रक का उपयोग करें।


1
मुझे नहीं लगता कि आपका कथन सही है: This will work if you do not have too many expressions.हालांकि मैं मानता हूं कि इसे नियंत्रक के बजाय किया जाना चाहिए।
राहुल देसाई

7

मैं आम तौर पर एनजी-शो और एन-छिपाने के साथ भावों से बचने की कोशिश करता हूं क्योंकि वे बूलियन के रूप में डिज़ाइन किए गए थे, न कि सशर्त। अगर मुझे सशर्त और बूलियन तर्क की आवश्यकता है, तो मैं एनजी का उपयोग करके सशर्त तर्क में रखना पसंद करता हूं-अगर पहली जांच के रूप में, तो एनजी-शो और एनजी-छिपाने के साथ बूलियन तर्क के लिए एक अतिरिक्त जांच में जोड़ें

हॉवरवर, अगर आप एनजी-शो या एनजी-छिपाने के लिए एक सशर्त का उपयोग करना चाहते हैं, तो यहां कुछ उदाहरणों के साथ एक लिंक दिया गया है: एनजी-अगर, एनजी-शो, एनजी-छिपाने, एनजी-इनकॉल, एनजी-स्विच का उपयोग करके सशर्त प्रदर्शन


2

इन उपरोक्त जवाबों में से कुछ मेरे लिए काम नहीं करते थे, लेकिन यह किया। बस किसी और के मामले में एक ही मुद्दा है।

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