दिलचस्प पोस्ट
प्रतिलिपि elision क्या है और यह कॉपी-और-स्वैप मुहावरों को कैसे अनुकूलित करता है? प्रोग्राम को libgcc_s_dw2-1.dll नहीं मिल सकता कंटेंट डिलीवरी नेटवर्क (सीडीएन) का उपयोग करने के फायदे और नुकसान क्या हैं? स्प्रिंग एमवीसी: रिसेप्शनबॉडी में छवि कैसे लौटाएगी? android.content.ActivityNotFoundException: प्रॉक्सी जो एंड्रॉइड इम्यूलेटर के साथ प्रमाणीकरण की आवश्यकता है एमएस एक्सेल दुर्घटनाग्रस्त जब vba कोड रन टी-एसक्यूएल में तिथियों की तुलना करें, समय के भाग की अनदेखी करें क्या सीएमएडी में अनिर्दिष्ट किसी यूनियन के माध्यम से प्रकार-छेड़छाड़ की जाती है, और क्या यह सी 11 में निर्दिष्ट हो गया है? इस सूचक की व्याख्या करना मुझे -46 देता है, लेकिन मुझे यकीन नहीं है कि क्यों पायथन में एक मैट्रिक्स को स्थानांतरित करें जावा में दो रंग "स्वाभाविक रूप से" मिश्रण करना अजगर स्क्रिप्ट के माध्यम से एक स्क्रीनशॉट लें मैं PHP का उपयोग कर एक MySQL डाटाबेस से छवियों को कैसे संग्रह और पुनः प्राप्त कर सकता हूं? क्रॉसवॉक के लिए ऐप आकार में 71 एमबी जोड़ा गया

AngularJS घड़ी डोम परिवर्तन

मेरे पास एक auto-carousel निर्देश है जो लिंक किए हुए तत्व के बच्चों के माध्यम से चलता है।

हालांकि बच्चे अभी तक डीओएम में लोड नहीं किए गए हैं, क्योंकि उनके ng-if भाव अभी तक नहीं पढ़े गए हैं।

मैं यह कैसे सुनिश्चित कर सकता हूं कि पैरेंट डायरेक्टिव जानता है कि इसके डोम ट्री में परिवर्तन हुए हैं?

  <ul class="unstyled" auto-carousel> <li class="slide" ng-if="name">{{name}}</li> ... <li class="slide" ng-if="email">{{email}}</li> </ul> 

मैं $timeout उपयोग कर सकता हूं लेकिन यह अविश्वसनीय लगता है मैं ng-if बजाय ng-show उपयोग कर सकता हूं, लेकिन वह सवाल का जवाब नहीं देता है और न कि मुझे क्या चाहिए।

Solutions Collecting From Web of "AngularJS घड़ी डोम परिवर्तन"

तो यह है कि मैं क्या कर रहा हूं:

मुझे पता चला कि आप एक समारोह को $scope.$watch वहां से, परिवर्तनों के लिए आप जिस अभिप्राय को देखना चाहते हैं उसका मूल्य वापस करने के लिए यह बहुत आसान है यह कार्यक्षेत्र पर एक संपत्ति के लिए एक प्रमुख स्ट्रिंग की तरह ठीक काम करेगा।

 link: function ($scope, $el, $attrs) { $scope.$watch( function () { return $el[0].childNodes.length; }, function (newValue, oldValue) { if (newValue !== oldValue) { // code goes here } } ); } 

मैं children देख रहा हूं नोड्स, children नहीं, क्योंकि children नोड्स सूची में तत्वों के साथ ही पाठ नोड्स और टिप्पणियां हैं। यह अनमोल है क्योंकि एन्जिल ng-repeat , ng-if ng-switch , ng-switch और ng-include -इन जैसे निर्देशों के लिए टिप्पणी प्लेसहोल्डर का उपयोग करता है जिसमें निष्कर्षण किया जाता है और डोम को बदलता है, जबकि children केवल तत्व होते हैं

यदि तत्व के डोम में गहराई से किसी भी परिवर्तन को देखने की आवश्यकता है, तो उत्परिवर्तन ऑब्ज़र्वर जाने का तरीका है:

 .directive('myDirective', function() { return { ... link: function(scope, element, attrs) { var observer = new MutationObserver(function(mutations) { // your code here ... }); observer.observe(element[0], { childList: true, subtree: true }); } }; }); 

मैंने इस कोण-डोम-घटनाओं के लिए एक डायरेक्टिव मॉड्यूल बनाया है

आपके मामले में आप कर सकते हैं

  <ul class="unstyled" auto-carousel> <li class="slide" ng-if="name" dom-on-create="nameCreated()">{{name}}</li> <li class="slide" ng-if="email" dom-on-destroy="emailDestroyed()">{{email}}</li> </ul> 

वर्तमान में केवल dom-on-create और dom-on-destroy dom-on-create का समर्थन करता है, लेकिन स्वीकार्य जवाब के बाद बेहतर प्रदर्शन होता है क्योंकि यह केवल प्रत्येक बार डोम ईवेंट के लिए एक बार आग लगाएगा, बजाय बार-बार $ वॉच कॉलबैक की जांच करेगा।

यद्यपि मुझे नहीं लगता कि यह कोणीय की सिफारिशों के साथ है, आप एनजी-इनिट का उपयोग कर सकते हैं, जो तत्व के प्रारंभ पर आग लगाते हैं:

 <ul class="unstyled" auto-carousel> <li class="slide" ng-if="name" ng-init="recheck()">{{name}}</li> <li class="slide" ng-if="email" ng-init="recheck()">{{email}}</li> </ul> 

आप अपने लिंक फ़ंक्शन के अंदर डायरेक्टिव सामग्री को पहले संकलित करने का प्रयास कर सकते हैं। उदाहरण के लिए:

 angular.module('myApp').directive('autoCarousel', ['$compile', function ($compile) { return { templateUrl: 'views/auto-carousel.html', restrict: 'A', replace: true, link: function (scope, element, attr) { $compile(element.contents())(scope); // your code goes here } } }]);