Tôi đang cố gắng sử dụng AngularJS và RequireJS kết hợp. Tôi muốn sử dụng dịch vụ $routeProvider
và tránh phải tải tất cả các bộ điều khiển cho các chế độ xem của tôi khi khởi động ứng dụng. Đối với điều đó, tôi đã thử các cách sau:Sử dụng bộ điều khiển tải và định tuyến AngularJS theo yêu cầu sử dụng requirejs
define(['require', 'angular', 'appModule'], function (require, angular, app) {
app.config(['$routeProvider', function($routeProvider) {
$routeProvider
.when('/sites', {templateUrl: '/Site/GetSitesView', controller: function() {
require(['sitesController'], function(SitesController) {
return new SitesController();
})
}})
}]);
});
Thật không may, điều đó không hiệu quả đối với tôi. Không có lỗi. Tệp JS chứa bộ điều khiển đang được nạp đúng cách nhưng tôi không thể thấy giá trị bị ràng buộc dữ liệu trong dạng xem được hiển thị. Tôi đã tự hỏi liệu tôi có thể gán giá trị của controller
theo một cách khác mà sẽ chờ đợi cho các cuộc gọi không đồng bộ (để tải các tập tin JS) để hoàn thành.
Bất kỳ ý tưởng nào?
Cách duy nhất để thực hiện việc này là giữ $ controllerProvider. Tôi có một giải pháp làm việc ở đây: https://github.com/matys84pl/angularjs-requirejs-lazy-controllers – matys84pl
@ matys84pl đó là thực sự dọc theo dòng của những gì tôi đã suy nghĩ để làm. Cảm ơn bạn đã chia sẻ điều này. Một điều mặc dù, tôi đã đi qua mã và thấy rằng bạn đang tải mẫu bằng cách sử dụng các Yêu cầu văn bản plugin, là cách duy nhất được hỗ trợ tải mẫu bằng cách sử dụng thư viện của bạn? Nếu tôi muốn tải mẫu từ một URL trên máy chủ, điều đó có hiệu quả không? – Kassem
Nó phụ thuộc nếu url có liên quan đến ứng dụng của bạn .. nói cách khác là nó trên cùng một tên miền? Nếu không thì tôi nghĩ rằng bạn sẽ phải sử dụng một số loại proxy để đạt được điều đó (để tải các tập tin từ tên miền khác). – matys84pl