2012-12-26 11 views
6

असल में, मैं निर्देश के भीतर से अभिव्यक्ति में परिवर्तन कैसे सुन सकता हूं?निर्देश के भीतर से एक अभिव्यक्ति का निरीक्षण करें


मैं गैर-दस्तावेजी ng-required उपयोग कर रहा हूँ सशर्त एक निश्चित क्षेत्र की आवश्यकता के लिए:

<input type="checkbox" ng-model="partner" checked /> 
<input ng-model="partnerName" placeholder="required" ng-required="partner" /> 

यह काम करता है महान (here's the Plunkr)। इसके साथ एकमात्र समस्या यह है कि यह placeholder "आवश्यक" पाठ रखता है, भले ही यह वास्तव में आवश्यक हो।


तो, मैंने अपना खुद का निर्देश बनाने का फैसला किया। यहाँ यह कैसे काम कर सकता है:

<input ng-placeholder="{ 'required': partner }" /> 

विचार कोणीय के ng-class के समान है, लेकिन मैं कोई रास्ता नहीं कैसे यह पूरा करने के लिए है। यहाँ मैं अब तक क्या कर लिया है:

app.directive('ngPlaceholder', function ($parse) { 
    return { 
     restrict: 'A', 
     link: function (scope, element, attrs) { 
      console.log(scope.$eval(attrs.ngPlaceholder)); 
     } 
    } 
}); 

जो एक अच्छा उद्देश्य यह है कि मैं placeholder मूल्य निर्धारित करने के लिए उपयोग कर सकते हैं लॉग करता है:

{ required: true } 

लेकिन कैसे मैं तो $digest/$apply चक्र में हुक है partner परिवर्तन जब भी placeholder विशेषता अद्यतन करने के लिए?

उत्तर

2

क्या आप यह चाहते हैं?

placeholder="{{{true: 'required', false:''}[partner]}}" 

ऊपर में {true: 'required', false:''} और फिर अनुक्रमित ऑब्जेक्ट बनाएगी: plunker

अपने लिंक समारोह के लिए मूल विचार

link: function (scope, element, attrs) { 
     scope.$watch(attrs.xngPlaceholder, function (newVal, oldVal, scope) { 
      element.removeAttr('placeholder'); 
      var att = ''; 
      angular.forEach(newVal, function (elm, key) 
       att += elm ? (key + ' ') : ''; 
      }); 
      element.attr('placeholder', att); 
     }, true); 
    } 
+2

एक सुझाव: एनजी-उपसर्ग का उपयोग कोणीय के बाद से न करें, जब तक कि आप नहीं जानते कि भविष्य के संस्करण में वे उसी वाक्यविन्यास –

+0

धन्यवाद के साथ एनजी प्लेसहोल्डर लागू करेंगे! यह सच है। हालांकि मैं सिर्फ मूल पोस्ट कोड का उपयोग करता हूं। – maxisam

0

एक वैकल्पिक दृष्टिकोण है कि एक निर्देश की आवश्यकता नहीं है की तरह होना चाहिए partner के वर्तमान मूल्य का उपयोग कर ऑब्जेक्ट करें।

संबंधित मुद्दे