Có cách nào để đưa phụ thuộc trễ vào mô-đun góc đã được khởi động sẵn không? Đây là ý tôi:
Giả sử rằng tôi có một ứng dụng góc cạnh trên toàn trang web, được định nghĩa là:
// in app.js
var App = angular.module("App", []);
Và trong mỗi trang:
<html ng-app="App">
Sau đó, tôi sẽ mở lại ứng dụng để thêm logic dựa trên nhu cầu của trang hiện tại:
// in reports.js
var App = angular.module("App")
App.controller("ReportsController", ['$scope', function($scope) {
// .. reports controller code
}])
Bây giờ, nói rằng một trong những bit theo yêu cầu của logic cũng đòi hỏi phụ thuộc của mình (như ngTouch
, ngAnimate
, ngResource
, vv). Làm cách nào để tôi có thể đính kèm chúng vào Ứng dụng cơ sở? Điều này dường như không hoạt động:
// in reports.js
var App = angular.module("App", ['ui.event', 'ngResource']); // <-- raise error when App was already bootstrapped
Tôi nhận ra mình có thể làm trước mọi thứ, tức là -
// in app.js
var App = angular.module("App", ['ui.event', 'ngResource', 'ngAnimate', ...]);
Hoặc tự xác định mọi mô-đun và sau đó đưa mọi thứ vào ứng dụng chính ( xem tại đây để biết thêm ):
// 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'])
Nhưng điều này sẽ yêu cầu tôi khởi tạo Ứng dụng mọi lúc với các phụ thuộc của trang hiện tại.
Tôi thích bao gồm cơ bản app.js
trong mỗi trang và đơn giản giới thiệu các phần mở rộng cần thiết để mỗi trang ( reports.js
, home.js
, vv), mà không cần phải xem xét lại mọi bootstrapping logic tôi thêm hoặc loại bỏ một cái gì đó.
Có cách nào để giới thiệu các phần phụ thuộc khi Ứng dụng đã được khởi động không? Điều gì được coi là cách (hoặc các cách) thành ngữ để làm điều này? Tôi nghiêng về giải pháp thứ hai, nhưng muốn xem liệu cách tôi đã mô tả có thể thực hiện được không. cảm ơn.