ponownie otwórz i dodaj zależności do już uruchomionej aplikacji

Czy istnieje sposób na wprowadzenie opóźnionej zależności do już załadowanego modułu kątowego? Oto co mam na myśli:

Powiedz, że mam aplikację kątową obejmującą całą witrynę, zdefiniowaną jako:

// in app.js
var App = angular.module("App", []);

I na każdej stronie:

<html ng-app="App">

Później ponownie otwieram aplikację, aby dodać logikę na podstawie potrzeb bieżącej strony:

// in reports.js
var App = angular.module("App")
App.controller("ReportsController", ['$scope', function($scope) {
  // .. reports controller code
}])

Teraz powiedzmy, że jeden z tych bitów logiki na żądanie wymaga także własnych zależności (npngTouch, ngAnimate, ngResourceitp.) Jak mogę je dołączyć do podstawowej aplikacji? To nie działa:

// in reports.js
var App = angular.module("App", ['ui.event', 'ngResource']); // <-- raise error when App was already bootstrapped

Zdaję sobie sprawę, że mogę zrobić wszystko z wyprzedzeniem, tj.

// in app.js
var App = angular.module("App", ['ui.event', 'ngResource', 'ngAnimate', ...]);

Możesz też zdefiniować każdy moduł samodzielnie, a następnie wstrzyknąć wszystko do głównej aplikacji (zobacz tutaj po więcej):

// in reports.js
angular.module("Reports", ['ui.event', 'ngResource'])
.controller("ReportsController", ['$scope', function($scope) {
  // .. reports controller code
}])

// in home.js
angular.module("Home", ['ngAnimate'])
.controller("HomeController", ['$scope', '$http', function($scope, $http){
  // ...
}])

// in app.js, loaded last into the page (different for every page that varies in dependencies)
var App = angular.module("App", ['Reports', 'Home'])

Ale to będzie wymagało zainicjowania aplikacji za każdym razem z zależnościami bieżącej strony.

Wolę dołączyć podstawoweapp.js na każdej stronie i po prostu wprowadź wymagane rozszerzenia do każdej strony (reports.js, home.js, itp.), bez konieczności korygowania logiki ładowania początkowego za każdym razem, gdy coś dodaję lub usuwam.

Czy istnieje sposób na wprowadzenie zależności, gdy aplikacja jest już uruchomiona? Co jest uważane za idiomatyczny sposób (lub sposoby), aby to zrobić? Skłaniam się ku temu drugiemu rozwiązaniu, ale chciałem sprawdzić, czy sposób, w jaki opisałem, może być również wykonany. dzięki.

questionAnswers(5)

yourAnswerToTheQuestion