2013-06-06 9 views
7

मेरे पास निर्देश के नियंत्रक में घोषित $scope.$watch है। जब मैं पेज बदलता हूं और निर्देश हटा दिया जाता है तो क्या मुझे रास्ते को मैन्युअल रूप से नष्ट करना होगा? यदि ऐसा है तो निर्देश कैसे हटाया गया है जब मैं पता लगा सकता हूं?Angularjs निर्देश घड़ी को हटा दें?

+0

कोणीय को आपके लिए इसका ख्याल रखना चाहिए –

उत्तर

20

यह दायरे पर निर्भर करता है, निर्देश नहीं। यदि दायरा नष्ट हो गया है, तो उसके सभी $ दर्शक इसके साथ मर जाते हैं। पेज पर आपके दायरे को कोणीय से नष्ट कर दिया जाएगा, इसलिए आपको सुरक्षित होना चाहिए।

जब कोई गुंजाइश मर जाती है तो यह $ $ नष्ट हो जाती है। आप इसे देख सकते हैं:

$scope.$on('$destroy', callback); 

और आप मैन्युअल रूप से, दायरे से नजर रखने वालों $ को अलग कर सकती समारोह में यह रिटर्न को फोन करके:

var sentinel = $scope.$watch('expression', callback); 
sentinel(); // kill sentinel 

तुम भी पर $ के साथ ऐसा कर सकते हैं।

+0

सबसे पहले, आपने कहा कि जब दायरा नष्ट हो जाती है, तो सभी दर्शक इसके साथ मर जाते हैं। फिर आपने सुझाव दिया कि मैन्युअल रूप से $ नष्ट करने वाले ईवेंट (क्यों? वे स्वचालित रूप से दायरे से मरने वाले हैं) पर वॉचर्स को हटाते हैं। यह मुझे समझ में नहीं आता है। क्या आप कृपया विस्तृत कर सकते हैं? – hendrix

+1

जब पृष्ठ ngView कोणीय के साथ बदल जाता है तो आपके लिए वॉचर्स के साथ अंतिम दायरा साफ कर देगा। (proof => http://goo.gl/GD0pM9) इसके अलावा कोणीय आपको एक वॉचर को नष्ट कर देता है ताकि आप अभिव्यक्ति को मैन्युअल रूप से हटा सकें यदि आपको वर्तमान दायरे पर अब इसकी आवश्यकता नहीं है। – Oliver

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