2014-06-26 37 views
0

我有一個控制器,如下所示,當提交表單時通過.$broadcast調用.$on屬性。我也希望事件在控制器加載時運行。是否有句法簡單的方法來執行此操作,還是必須添加一個on page load偵聽器?廣播和頁面加載時的角度運行函數

myApp.controller('DownloadsCloudCtrl', ['$scope', 
             '$rootScope', 
             'requestService', 
    function($scope, $rootScope, requestService){ 
    $scope.title = 'Most Popular Keywords'; 
    $scope.tooltip = 'Test tooltip'; 
    $rootScope.$on('updateDashboard', function(event, month, year) { 
    requestService.getP2PKeywordData(month, year).then(function(data) { 
     $scope.d3Data = data; 
    }); 
    }); 
}]); 
+0

第一次加載頁面時,*代表什麼意思?爲什麼不在控制器加載時運行所需的代碼? –

+0

當然,對不起,這是一個更好的方式。我希望它在控制器加載時運行。 –

+0

與馬特一樣的問題。你能不能在加載控制器時播放? – JerryKur

回答

1

如果你想在你的控制器加載時運行這個,那麼這非常簡單。基本上,刪除您$on邏輯到它自己的功能和調用它的控制器初始化內部:

myApp.controller('DownloadsCloudCtrl', ['$scope', '$rootScope', 'requestService', 
function($scope, $rootScope, requestService){ 
    $scope.title = 'Most Popular Keywords'; 
    $scope.tooltip = 'Test tooltip'; 

    var updateDash = function(month, year) { 
     requestService.getP2PKeywordData(month, year).then(function(data) { 
      $scope.d3Data = data; 
     }); 
    }; 

    $rootScope.$on('updateDashboard', function(event, month, year) { 
     // run the update function 
     updateDash(month, year); 
    }); 

    // run the update function once when the controller loads 
    updateDash(someMonth, someYear); 
}]); 

現在,這將更好地抽象爲一個服務,但至少應該讓你開始。