Tôi đang cố triển khai giao diện người dùng danh sách/chi tiết cổ điển. Khi nhấp vào một mục trong danh sách, tôi muốn hiển thị biểu mẫu chỉnh sửa cho mục đó trong khi vẫn hiển thị danh sách. Tôi đang cố gắng để làm việc xung quanh giới hạn 1-view-mỗi trang của Angular và quyết định làm điều đó bằng cách có tất cả các URL được định tuyến đến cùng một bộ điều khiển/xem. (Có lẽ đây là gốc rễ của vấn đề của tôi và tôi là mở cửa cho giải pháp thay thế.)AngularJS: Nhiều chế độ xem có định tuyến mà không làm mất phạm vi
Routing:
$routeProvider
.when('/list', { templateUrl: '/Partials/Users.html', controller: UserController })
.when('/edit/:UserId', { templateUrl: '/Partials/Users.html', controller: UserController })
.otherwise({ redirectTo: '/list' });
Quan điểm (/Partials/Users.html):
<!-- List of users -->
<div ng-repeat="user in Users">
<a href="*/edit/{{ user.Id }}">Edit {{ user.Name }}</a>
</div>
<!-- Edit form -->
<div>
{{ SelectedUser.Name }}
</div>
điều khiển :
function UserController($scope, $routeParams) {
// the model for the list
$scope.Users = GetUserListFromService();
// the model for the edit form
if ($routeParams.UserId != null)
$scope.SelectedUser = GetUserFromService($routeParams.UserId);
}
vấn đề:
- Khi nhấp vào liên kết chỉnh sửa, bộ điều khiển được khôi phục với phạm vi mới, vì vậy tôi phải bắt đầu lại danh sách Người dùng. (Trong một ví dụ phức tạp hơn, tôi có thể có đầu vào từ người dùng được lưu trữ ràng buộc với mô hình và điều này cũng sẽ bị mất.) Tôi muốn duy trì phạm vi từ tuyến trước đó.
- Tôi muốn sử dụng bộ điều khiển riêng biệt (hoặc nhiều nhà phát triển Angular khác đã khiếu nại, khả năng có nhiều chế độ xem được hiển thị!) Nhưng điều đó dẫn đến cùng một vấn đề mất phạm vi.
có thể trùng lặp của [Angularjs, chuyển phạm vi giữa các tuyến] (http://stackoverflow.com/questions/13882077/angularjs-passing-scope-between-routes) –