2013-03-01 42 views
11

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?

+5

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

+0

@ 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

+0

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

Trả lời

4

Bạn có thể tìm ra giải pháp here

Bạn cần phải xác định một tài sản quyết tâm trên mỗi tuyến đường và gán cho nó một hàm trả về một lời hứa. Chức năng có thể tự động tải tập lệnh chứa bộ điều khiển đích và giải quyết lời hứa khi quá trình tải hoàn tất. Trong số article, Dan Wahlin cho biết cách sử dụng quy ước trên cấu hình để có định tuyến thực tế hơn.

+0

Cảm ơn bạn đã đăng bài. Giúp tôi rất nhiều! – VishwaKumar

Các vấn đề liên quan