2014-10-22 10 views
11

मैं एक कस्टम निर्देश बनाने की कोशिश कर रहा हूं जो मौजूदा तत्व की कार्यक्षमता को बढ़ाता है। मैं यह जानना चाहता हूं कि कोई निश्चित विशेषता मौजूद है और यदि नहीं तो इसे जोड़ें (उदा। एनजी-क्लास)।परिवर्तन कोणीय निर्देश तत्व विशेषता गतिशील रूप से

मैंने प्री-संकलन के दौरान इसे प्राप्त करने का प्रयास किया है लेकिन कोणीय नई विशेषता के अतिरिक्त प्रतिक्रिया नहीं देता है।

I created a plunker एनजी-छिपाने का उपयोग करके एक साधारण उदाहरण के साथ।

<input hide type="submit" value="Submit"/>

 

    app.directive('hide', function() { 
     return { 
     restrict: 'A', 
     compile: function(){ 
      return { 
       pre: function(scope, element, attributes, controller, transcludeFn){ 
        attributes.$set("ng-hide", true); 
       }, 
       post: function(scope, element, attributes, controller, transcludeFn){ 

       } 
      } 
     }, 
     }; 
    }); 

अगर मैं एचटीएमएल तो सबमिट बटन पर सही ढंग से छिपा हुआ है में एनजी-हाइड = "true" जोड़ें। अगर मैं यह निर्देश के लिए छोड़ तो मैं देख सकता हूँ कि डोम तत्व ठीक से सेट किया है, लेकिन तत्व छुपी नहीं है:

<input hide="" type="submit" value="Submit" ng-hide="true">

किसी भी मदद की सराहना की!

उत्तर

19

आप द्वारा

  • निर्देश की प्राथमिकता उच्च स्थापना जोड़ने समारोह में यह कर सकते हैं, तो यह सभी दूसरों से पहले चलाता है।
  • इसे टर्मिनल पर सेट करें, इसलिए अन्य इसके बाद नहीं चलते हैं। आप (जैसे जोड़ने विशेषताओं के रूप में) यह करने के लिए परिवर्तन

उदाहरण के लिए बनाने के बाद

  • तत्व पुनः संकलित करें:

    app.directive('hide', function($compile) { 
        return { 
        restrict: 'A', 
        priority: 10000, 
        terminal: true, 
        link: function(scope, element, attrs) { 
         attrs.$set('ngHide', true); 
         attrs.$set('hide', null); 
         $compile(element)(scope); 
        } 
        }; 
    }); 
    

    रूप http://plnkr.co/edit/tHNvCxVn2wURO38UtI0n?p=preview

  • +0

    पर देखा जा सकता है आप एक प्रतिभाशाली हैं, धन्यवाद! मुझे टर्मिनल को अंत में सेट करने की आवश्यकता नहीं थी; प्राथमिकता और तत्व संकलित (निर्देशक शून्य के साथ) चाल – Alan

    +2

    मैंने 'टर्मिनल: सत्य 'रखा होगा। यह वर्तमान मामले में तकनीकी रूप से आवश्यक नहीं हो सकता है, लेकिन यह तत्व पर किसी भी अन्य निर्देशों की अनावश्यक पुन: संकलन को रोकता है। –

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