टेम्पलेट प्रस्तुत करने के बाद $scope.myWork()
विधि कैसे चला सकता है? मैं $scope.value
सेट करना चाहता हूं और उसके बाद मुझे JQuery के साथ कुछ बदलना होगा (उदाहरण के लिए। टेम्पलेट सामग्री के DOM में)। $scope.$watch('value', function(){....})
"पहले" प्रस्तुत करना काम कर रहा है (टेम्पलेट का डोम अभी तक उपलब्ध नहीं है)। धन्यवाद।कोणीय जेएस: प्रस्तुत करने के बाद कॉलबैक (प्रस्तुत करने के बाद डोम के साथ काम करें)
उत्तर
मैं एक विशेषता निर्देश में terminal
और transclude
उपयोग करने के बाद एक मॉडल अद्यतन किया जाता है और देखने प्रदान की गई है एक scoped विधि कॉल करने के (मेरे मामले में एक $ Resource.query के बाद एक iframe आकार बदलने के लिए):
.directive('postRender', [ '$timeout', function($timeout) {
var def = {
restrict : 'A',
terminal : true,
transclude : true,
link : function(scope, element, attrs) {
$timeout(scope.resize, 0); //Calling a scoped method
}
};
return def;
}])
$ टाइमआउट काला जादू है। यह जेएस विधि को विशेषता मान के रूप में घोषित करना संभव है और $ इसे पार्स करना संभव है।
तो मैं एक ng-repeat
में इसका इस्तेमाल करते हैं (मेरे मामले एक पेड़ रिकर्सिवली प्रदान की गई है में):
<div post-render ng-repeat="r in regions | orderBy:'name'" ng-include="'tree_region_renderer.html'">
जेन्स जवाब ऊपर काम करेंगे, लेकिन ध्यान दें कि नए AngularJS संस्करण पर (उदाहरण के 1.2.3 के लिए) आप उस पोस्ट पर गुणों के रूप में एनजी-दोहराने के साथ संयोजन में पोस्टरेंडर निर्देश नहीं हो सकता है क्योंकि दोनों ने स्थानांतरित किया है: सत्य। उस स्थिति में आपको या तो पोस्टरेंडर निर्देश विशेषता के साथ ट्रांसफर को अलग करना होगा या अलग टैग होना चाहिए।
टर्मिनल का उपयोग करते समय विशेषताओं की प्राथमिकता के बारे में भी जागरूक रहें: सच है क्योंकि आप एक ही टैग पर उच्च प्राथमिकता वाले एक के कारण एक विशेषता गैर-प्रभावी होने का अंत कर सकते हैं।
मुझे यह समस्या भी थी, अन्य समाधान मेरे लिए अच्छा काम नहीं करते थे, और ऐसा लगता है कि प्रोटैक्टर को हल किया जाना चाहिए। Protractor's client-side scripts की एक त्वरित समीक्षा से पता चलता है कि यह वास्तव में परीक्षण चलाने के लिए angular.getTestability(element)
का उपयोग करता है। विधि तब तक प्रतीक्षा करती है जब तक लंबित टाइमआउट या http अनुरोध न हों और फिर आपका कॉलबैक चलाएं। यहां मेरा निर्देश है:
export function afterRender ($timeout) {
"ngInject";
return {
restrict: 'A',
terminal: true,
link: function (scope, element, attrs) {
angular.getTestability(element).whenStable(function() {
console.log('[rendered]');
});
}
};
}
की सलाह देते हैं जब से तुम कोणीय ऐप्लिकेशन के अंदर चल रहे हैं देता है तो आप '$ browser' इंजेक्षन और उसके' notifyWhenNoOutstandingRequests() 'विधि के साथ एक कॉलबैक रजिस्टर कर सकते हैं। नोट, हालांकि, यह कुछ अनियंत्रित, निजी एपीआई पर निर्भर है और बिना किसी सूचना के तोड़ सकता है। – gkalpak
मुझे यह पृष्ठ मिला जब DOM प्रतिपादन प्रोफ़ाइल के लिए एक तरीका ढूंढ रहे थे। मुझे एक बहुत ही सरल समाधान मिला जो मेरे उपयोग के मामले में काम कर रहा है।
डीओएम तत्व में और हैंडलर फ़ंक्शन में एनजी-इनिट हैंडलर संलग्न करें, निष्पादन उत्पन्न करने के लिए $ टाइमआउट का उपयोग करें। उदाहरण:
HTML:
<div ng-init="foo()">
जे एस:
$scope.foo = function() {
$timeout(function() {
// This code runs after the DOM renders
});
});
- 1. टेम्पलेट प्रस्तुत करने के बाद नॉकआउट जेएस बाइंड घटना
- 2. के बाद नॉकआउट जेएस डोम
- 3. Backbone.js: प्राप्त करने के बाद(), केवल नए मॉडल प्रस्तुत करें
- 4. प्रस्तुत करने से पहले निष्पादित करने के लिए फ़िल्टर करें लेकिन नियंत्रक के बाद?
- 5. जावास्क्रिप्ट-प्रस्तुत पृष्ठ (इसके साथ बातचीत करने के बाद) का HTML प्राप्त करें
- 6. बाद में लेआउट बनाम लेआउट, रेंडर बनाम प्रस्तुत करने के बाद, ExtJS में?
- 7. जेएस फॉर्म रेल के साथ त्रुटि संदेश प्रस्तुत करें
- 8. __doPostBack() के बाद कॉलबैक?
- 9. परिवर्तन के बाद कोणीय जेएस अपडेट इनपुट फ़ील्ड
- 10. प्रस्तुत करने के बाद कार्रवाई करें() विधि पूर्ण हो गई है
- 11. A4j लिंक के बाद रिचफ़ेस घटक को पुन: प्रस्तुत करने के लिए कैसे
- 12. render_to_string का उपयोग करने के बाद सामान्य रूप से दृश्य कैसे प्रस्तुत करें?
- 13. एपुलरजेज ऐप प्रारंभ करने के बाद मॉड्यूल इंजेक्ट करें
- 14. बैकबोन जेएस में दृश्य प्रस्तुत करने पर जावास्क्रिप्ट को कॉल करना। पोस्ट-रेंडर कॉलबैक?
- 15. jQuery के साथ $ .load() के बाद डोम में नहीं है?
- 16. दृश्य प्रस्तुत करने के बाद आप कुछ कैसे करते हैं? (Django)
- 17. प्रपत्र प्रस्तुत करने पर jQuery के साथ पोस्ट डेटा भेजने
- 18. रीढ़ दृश्य घटनाओं के बाद काम नहीं करते फिर से प्रस्तुत करना
- 19. फोर्स बटन क्लिक करने के बाद
- 20. कोणीय बूटस्ट्रैप अकॉर्डियन काम करने के लिए
- 21. प्रस्तुत: के साथ आंशिक: लेआउट दृश्य में काम नहीं करते
- 22. बैकबोन.जेएस में दूसरे प्रस्तुत करने के बाद घटनाएं क्यों नहीं चल रही हैं?
- 23. रिमोट I/O को कॉलबैक फ़ंक्शन प्रस्तुत करने में समस्या
- 24. jQuery.tmpl() में एचटीएमएल प्रस्तुत करने के रूप में एचटीएमएल कैसे प्रस्तुत करें?
- 25. रेल मॉडल के कॉलबैक के बाद परीक्षण कैसे करें?
- 26. मुख्य धागे के बाहर MKMapView प्रस्तुत करने के लिए कैसे?
- 27. कैसे JSON ऑब्जेक्ट के रूप प्रपत्र प्रस्तुत करने के लिए
- 28. Jquery - प्रदर्शन करना कॉलबैक के बाद
- 29. कोणीय जेएस
- 30. एंड्रॉइड: ListView के आइटम को प्रस्तुत करने की ऊंचाई
मेरी उदाहरण नहीं है, वह काम नहीं करता - http://jsfiddle.net/C6SUv/7/ (क्यों 'isn टी $ scope.after प्रत्येक प्रस्तुत करने के बाद रेंडर कॉल?)। – user1595465
क्योंकि लिंक फ़ंक्शन को तत्व के बाद एक बार बुलाया जाता है, प्रत्येक कोणीय के प्रस्तुत करने के बाद नहीं। आप निर्देश क्यों नहीं बना सकते हैं जो आपको jQuery के साथ आवश्यक परिवर्तन और कोणीय अद्यतन करते हैं? नियंत्रकों के अंदर डोम मैनिपुलेटिंग एक अच्छा अभ्यास नहीं है –
हम्मम्म। मुझे फिक्स ऊंचाई के साथ div को स्क्रॉल करना है। मेरे पास कर्सर को फ़ील्ड की सूची में ले जाने के लिए बटन हैं। मैंने ngClick में $ scope.value सेट किया है और उसके बाद मुझे सही स्थिति (स्क्रॉलटॉप के माध्यम से) स्क्रॉल करने की आवश्यकता है। यही कारण है, मैं नियंत्रक के अंदर डोम के साथ क्यों छेड़छाड़ करना चाहता हूं। कोई उपाय? – user1595465