Tôi đã cấu hình như sau:Chuyển đổi tầm nhìn của một ng-bao gồm tùy thuộc vào tuyến đường
$routeProvider
.when('/cars', { templateUrl: 'app/cars/index.html', controller: 'CarsCtrl', reloadOnSearch: false })
.when('/bikes', { templateUrl: 'app/bikes/index.html', controller: 'BikesCtrl', reloadOnSearch: false });
và đâu đó trong thư mục gốc của tôi index.html có một:
<a href="#/cars">Cars</a>
<a href="#/bikes">Bikes</a>
<div ng-view></div>
Bây giờ, tôi muốn cả hai lượt xem được tải và tạo trong DOM cùng một lúc và hiển thị một trong số chúng tùy thuộc vào tuyến đường/URL.
Giống như sau (không phải mã thực tế, chỉ để cung cấp cho bạn ý tưởng).
app.js:
$routeProvider
.when('/cars', { controller: 'CarsCtrl', reloadOnSearch: false })
.when('/bikes', { controller: 'BikesCtrl', reloadOnSearch: false });
gốc index.html:
<a href="#/cars">Cars</a>
<a href="#/bikes">Bikes</a>
<div ng-include="'app/cars/index.html'" ng-show="carsVisible"></div>
<div ng-include="'app/bikes/index.html'" ng-show="bikesVisible"></div>
CẬP NHẬT: Tôi biết rằng ng xem loại thực hiện điều này, nhưng sự khác biệt, nếu tinh tế, tồn tại . Tôi muốn html của mỗi lần xem được tạo ra một lần và luôn ở trong DOM.
Không thể thực hiện điều này bằng chế độ xem ng. Nhưng câu hỏi là, tại sao bạn thực sự muốn làm điều này. Có phải vì bạn muốn 'tiền xử lý' mỗi tuyến đường để tải nhanh hơn không? Định tuyến đã khá nhanh, trừ khi bộ điều khiển yêu cầu một số dữ liệu không đồng bộ, trong trường hợp này bạn sẽ sử dụng 'giải quyết' bên trong đối tượng định nghĩa tuyến đường, cộng với một số mã khởi tạo ứng dụng để tìm nạp dữ liệu không đồng bộ trong nền. – Stewie