2015-03-05 7 views
5

मेरे पास सभी शैली नियंत्रणों के साथ एक समृद्ध टेक्स्ट बॉक्स है।

जब मैं इसमें एक नया टेक्स्ट डालता हूं - यह बचाता है।

जब मैं सामग्री (टेक्स्ट) में रंगीन हाइलाइटिंग और बोल्ड टेक्स्ट जैसी कुछ शैलियों के साथ कोई भी परिवर्तन करता हूं - यह बदले गए टेक्स्ट और शैलियों को बचाता है।

लेकिन, जब मैं बिना किसी सामग्री परिवर्तन के शैली बदलता हूं - यह उन शैली में बदलावों को सहेज नहीं पाएगा।

मैं नए मूल्य और पुराने मूल्य की तुलना करने के लिए $ घड़ी का उपयोग कर रहा हूं।

शैली परिवर्तनों के लिए भी इसे कैसे काम करें?

+1

क्या आप अपना कोड संलग्न कर सकते हैं? – mmmmmpie

उत्तर

10
angular.module("app",[]).directive('spyStyle', [function() { 

    return { 

     link: function (scope, element, attrs) { 

      scope.$watch(function() { 
       return element.css(attrs['spyAttribute']); 
      }, styleChangedCallBack, 
      true); 

      function styleChangedCallBack(newValue, oldValue) { 
       if (newValue !== oldValue) { 
        // do something interesting here 
       } 
      } 

     } 
    }; 

}]); 

अपने HTML में:

<div spy-style spy-attribute="height" > 

मामले में आप के निर्देश के बाहर कस्टम कार्यों को निष्पादित करना चाहते हैं:

angular.module("app",[]).directive('spyStyle', [function() { 

    return { 

     link: function (scope, element, attrs) { 

      scope.$watch(function() { 
       return element.css(attrs['spyAttribute']); 
      }, styleChangedCallBack, 
      true); 

      function styleChangedCallBack(newValue, oldValue) { 
       if (newValue !== oldValue) { 
        // do something interesting here 
        // invoking callback function: 
        scope[attrs['spyStyle']](newValue); 
       } 
      } 

     } 
    }; 

}]); 
:

<div spy-style="functionNameToExecute" spy-attribute="height" > 

अपने निर्देशक कोड में यह परिवर्तन करने के

+0

यह दृष्टिकोण मेरे मामले के लिए काम नहीं कर रहा है। मेरे पास बूटस्ट्रैप टैबबड फॉर्म है, और मैं आखिरी टैब की स्टाइल एट्रिब्यूट 'डिस्प्ले' देख रहा हूं जिसमें कैनवास है। यदि 'डिस्प्ले' का मान 'none' से 'ब्लॉक' में बदल जाता है तो मैं इस टैब के अंदर रहने वाले कैनवास को फिर से निकालने के लिए आकार बदलने का प्रयास करना चाहता हूं। मुझे लगता है कि मुझे इसे काम करने के लिए $ scope। $ Digest() को कॉल करने की आवश्यकता है, लेकिन मुझे नहीं पता कि कैसे। मैं अंतिम टैब को नियंत्रित करने और प्रदर्शन सीएसएस विशेषता को देखने के लिए कस्टम निर्देश का उपयोग कर रहा हूं। डीबग के दौरान मैं उस घड़ी को देख सकता हूं लेकिन ऐसा लगता है कि यह बहुत जल्दी चल रहा है और हर समय काम नहीं करता है। – tarekahf

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