2014-09-12 59 views
0

我正在發射銷燬函數來處理控制器的銷燬。angularjs銷燬和初始化事件

$scope.$on("$destroy", function() { 
     alert(0) 
    }); 

我有調用controller與stateProvider的鏈接。

<a href ="#/product">products</a> 
<a href ="#/categories">categories</a> 

當我點擊產品鏈接分類頁面中工作時,破壞處理函數射擊。

  1. 誰點擊另一個鏈接時銷燬控制器範圍? stateProvider還是?
  2. 我怎麼能像銷燬消防控制器初始化功能。
+0

你是什麼意思火控制器初始化?控制器在每次遇到時都會初始化。您應該閱讀控制器文檔 – charlietfl 2014-09-12 12:14:10

回答

2
  1. 控制器由角內部破壞。 「誰」確實不重要。

  2. 如果您希望在創建控制器時運行某個功能,那麼就直接調用它在控制器的「身體」:

    .controller('Ctrl', function($scope) { 
        var initialize = function() { 
        // do some stuff when the controller is created 
        }; 
    
        initialize(); 
    
        $scope.$on("$destroy", function() { 
        alert(0) 
        }); 
    }); 
    
+0

手動初始化非常有用,但我認爲angular應該創建一個初始結構,如事件。 – barteloma 2014-09-12 12:47:50

0

當你點擊產品鏈接時,你正在遠離類別視圖,它是控制器。由於控制器不在範圍內,因此被銷燬。我認爲像routeChangeStart或routeChange成功的東西會更適合你。當你點擊鏈接時,一個被激發,另一個在你成功導航時被激發,取決於你想要執行的代碼。如果您在類別頁面移動到產品頁面,則RouteChangeStart代碼將由產品的類別ctrl和routeChangeSuccess執行。例如,在產品的控制器:

$scope.$on("$routeChangeStart", function(event, next, current) { 
    //execute something here 
}); 
1
  1. 一個新的控制器被創建的每路線,所以舊的控制器需要去。而新的用武之地。

  2. element.scope()。$ destroy()方法