2015-05-15 3 views
5

निर्देश में, मैं यह जांचना चाहता हूं कि इस पर कुछ फ़ंक्शन निष्पादित करने से पहले किसी तत्व के पास कोई विशेषता है या नहीं। लेकिन मुझे jqLite docs में इसके लिए कुछ भी नहीं देखा गया है।AngularJS hasAttribute() के बराबर है?

उदा। :

.directive('noReadonly', function() { 

    return { 
     link: function($scope, $element, $attr, ctrl) { 

     $element.on('focus', function() { 
      if ($element.hasAttribute('readonly')) 
      $element.removeAttr('readonly'); 
     }); 

     }, 
    } 
    }) 
+1

'(angular.isDefined ($ attr.readonly)) अगर {...}' – Blackhole

उत्तर

9

$attr विशेषताओं के साथ एक वस्तु है, तो आप सामान्य की तरह इसके साथ काम कर सकते हैं:

if($attr.hasOwnProperty("readonly")) 

टिप्पणी में उल्लेख किया है, यह जाँच करता है कि संपत्ति मौजूद है। यह तत्व एक सच्चे जवाब में परिणाम होगा:

if($attr.hasOwnProperty("readonly") && $attr.readonly) {} 

ध्यान दें कि विशेषता मान तार के रूप में पार्स कर रहे हैं, $attr.readonly तो:

<input name="test" readonly> 

आप भी truthy मूल्यों के लिए जाँच करना चाहते हैं, तो आप तर्क का विस्तार कर सकते "true" (स्ट्रिंग) के बराबर है और true (बूलियन) नहीं है।

+0

कि जाँच करता है अगर यह संपत्ति है, या यदि संपत्ति का मूल्य निर्धारित किया गया है? –

+1

यह जांच करता है कि संपत्ति मौजूद है या नहीं। – azium

+0

यह 'लिंक' संदर्भ में काम करता है। 'संकलन' संदर्भ में इसका उपयोग कैसे करें? – ganeshk

1
if ($attr.readonly) { 
    ... 
} 
else { 
    //doesn't have it. 
} 
संबंधित मुद्दे