как да направите дъщерни ъглови контролери в страница зависи от основния контролер на страницата

В моята уеб страница има основен контролер, който се нуждае от известна инициализация, за да се извърши с помощта на услуги чрез извикване на данни от сървър с помощта на $http или getJSON. В страницата има други дъщерни контролери, които не трябва да се извикват, след като главният контролер приключи със зареждането на данни. Как да инжектирате DI в контролери?

Edit1 ex: нещо подобно на Извикване на Angular контролер от скрипт при зареждане, където услугата се обажда на сървъра, за да получи някои данни и след като приключи, уведомява другите за това. Възможно ли е това?


person user2025527    schedule 25.04.2013    source източник
comment
Не разбирам какво имате предвид под други дъщерни контролери в страницата, които не трябва да се извикват. Можете ли да обясните още нещо?   -  person Mark Rajcok    schedule 25.04.2013
comment
редактиран основен въпрос например   -  person user2025527    schedule 25.04.2013
comment
Ако искате вашите изгледи да се актуализират, когато постъпват данни от сървъра, може да не се налага да ги уведомявате... Angular може да направи това автоматично вместо вас. В контролер задайте свойство $scope да препраща към свойство на услуга и след това го {{use}} във вашия изглед. Когато данните се върнат от сървъра, Angular ще забележи промяната и ще актуализира вашия изглед. Вижте този въпрос за пример .   -  person Mark Rajcok    schedule 26.04.2013


Отговори (1)


Изглежда, че трябва да разгледате методите $scope.$emit, $scope.$broadcast и $scope.$on за обработка на събития в angularjs.

Разгледайте ръководството за ъглов обхват.

Основната идея може да изглежда така:

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

тогава дъщерен контролер може да използва:

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