how to make child angular controllers in a page depends on main controller of page

In my webpage there is main controller that needs some initialization to be done using services by calling data from server using $http or getJSON. There are other child controllers in page that should not be called once main controller is done with data loading. How to inject DI in controllers?

Edit1 ex: something similar to Call Angular controller from script onload where service calls server to get some data and once it finishes notify others about it. Is this possible?

Looks like you should look into the $scope.$emit, $scope.$broadcast, and $scope.$on methods to handle events in angularjs.

Take a look at the angular scope guide.

The basic idea might look something like this:

$http.get("/api/stuff", function(data)
    .then(function(data){
      $scope.$broadcast("apiLoad", data);
    }, function(err){
      //do something with err
    })

then a child controller can use:

$scope.$on("apiLoad", function( event, data){
  //do something now that apiLoad is done.
})