उत्तर
$scope.$watch('$viewContentLoaded',
function() {
$timeout(function() {
//do something
},0);
});
केवल वही है जो मेरे द्वारा परीक्षण किए गए अधिकांश परिदृश्यों में काम करता है। 4 घटकों के साथ एक नमूना पृष्ठ में, जो सभी टेम्पलेट से HTML का निर्माण करते हैं, घटनाओं का क्रम था
$document ready
$onInit
$postLink
(and these 3 were repeated 3 more times in the same order for the other 3 components)
$viewContentLoaded (repeated 3 more times)
$timeout execution (repeated 3 more times)
इसलिए ज्यादातर मामलों में एक $ document.ready () बेकार है क्योंकि कोणीय में DOM का निर्माण किया जा सकता है जो कहीं भी तैयार नहीं है।
लेकिन अधिक दिलचस्प, $ viewContentLoaded को निकाल दिए जाने के बाद भी, ब्याज का तत्व अभी भी नहीं मिला।
$ टाइमआउट निष्पादित होने के बाद ही यह पाया गया था। ध्यान दें कि भले ही $ टाइमआउट 0 का मान था, लगभग 200 मिलीसेकंड निष्पादित होने से पहले समाप्त हो गया, यह दर्शाता है कि यह धागा काफी समय से बंद था, संभवतः जबकि डोम ने कोणीय टेम्पलेट्स को एक मुख्य धागे में जोड़ा था। पहले $ document.ready () से अंतिम $ टाइमआउट निष्पादन तक का कुल समय लगभग 500 मिलीसेकंड था।
एक असाधारण मामले में जहां एक घटक का मूल्य निर्धारित किया गया था और फिर पाठ () मूल्य को बाद में $ समयबाह्य में बदल दिया गया था, तब तक काम करने तक $ समयबाह्य मूल्य बढ़ाना पड़ता था (भले ही तत्व $ समय के दौरान मिल जाए। )। 3rd पार्टी घटक के भीतर कुछ async पर्याप्त समय बीतने तक पाठ पर पूर्वता लेने के लिए एक मूल्य का कारण बनता है। एक और संभावना $ गुंजाइश है। $ evalAsync, लेकिन कोशिश नहीं की गई थी।
मैं अभी भी उस घटना की तलाश कर रहा हूं जो मुझे बताती है कि डोम पूरी तरह से बस गया है और इसमें हेरफेर किया जा सकता है ताकि सभी मामले काम करें। अब तक एक मनमाना समयबाह्य मूल्य आवश्यक है, जिसका अर्थ है कि सबसे अच्छा यह एक कीचड़ है जो धीमे ब्राउज़र पर काम नहीं कर सकता है। मैंने JQuery के विकल्प जैसे liveQuery और प्रकाशित / सदस्यता की कोशिश नहीं की है जो काम कर सकते हैं, लेकिन निश्चित रूप से शुद्ध कोणीय नहीं हैं।