В моята уеб страница има основен контролер, който се нуждае от известна инициализация, за да се извърши с помощта на услуги чрез извикване на данни от сървър с помощта на $http или getJSON. В страницата има други дъщерни контролери, които не трябва да се извикват, след като главният контролер приключи със зареждането на данни. Как да инжектирате DI в контролери?
Edit1 ex: нещо подобно на Извикване на Angular контролер от скрипт при зареждане, където услугата се обажда на сървъра, за да получи някои данни и след като приключи, уведомява другите за това. Възможно ли е това?
как да направите дъщерни ъглови контролери в страница зависи от основния контролер на страницата
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