के साथ ngModel का उपयोग करते समय सर्वोत्तम प्रथाएं यहां मेरी समस्या है। ,कोणीयजेएस निर्देश - jQuery विजेट
module.directive('myWidget', [function() {
return {
require: "ngModel",
restrict: "A",
replace: true,
templateUrl: "templates/myWidget.html",
link: function(scope, element, attrs, ctrl) {
element.widget_name().on('value_updated', function(event) {
scope.$apply(function() {
var newModelValue = event.some_value;
ctrl.$setViewValue(newModelValue);
});
});
scope.$watch(attrs["ngModel"], function(value){
element.widget_name('set_value', value);
});
}
};
}]);
तो अगर मॉडल के मूल्य में परिवर्तन, तो हैंडलर जो $ घड़ी का उपयोग मॉडल के बदलावों को सुनने के लिए पंजीकृत है निष्पादित किया जाएगा: उदाहरण के लिए, हम निम्न निर्देश है, जो पर्दे के पीछे कुछ jQuery विजेट का उपयोग करता है , और, इसके परिणामस्वरूप, विजेट की 'set_value' विधि भी निष्पादित की जाएगी। इसका मतलब है कि 'value_updated' ईवेंट ट्रिगर किया जाएगा।
मेरा प्रश्न है: डीओएम इवेंट हैंडलर और वॉचर्स की अतिरिक्त कॉल से बचने के लिए निर्देशों में समान व्यवहार को लागू करने का सबसे अच्छा अभ्यास क्या है?
धन्यवाद मार्क, आपका समाधान पूरी तरह से मेरी समस्या हल करता है। लेकिन क्या आप कृपया बता सकते हैं - जब यह देखने वालों के लिए उपयुक्त है और जब $ कार्यान्वयन प्रदान करता है? – oaleynik
@oaleynik, $ rendnder() को तब भी लागू किया जाना चाहिए जब भी आप कुछ करना चाहते हैं क्योंकि कोणीय के अंदर एक एनजी-मॉडल मान बदल दिया गया था। एनजी-मॉडल स्वचालित रूप से हमारे लिए घड़ी सेट करता है, और $ रेंडर() को कॉल किया जाता है यदि यह बदलाव को नोटिस करता है। तो सामान्य रूप से, एनजी-मॉडल के साथ, आप अपनी खुद की $ घड़ी का उपयोग करने के बजाय $ रेंडर लागू करना चाहते हैं। –